用例:
- 最终用户搜索某个内容,然后返回带有Result对象的ArrayCollection。这显示在数据网格中
- 最终用户选择一些搜索结果,并将其"移动"到另一个数据网格以供稍后使用
- 最终用户进行另一次搜索
问题:一些搜索结果可能包含用户之前已经选择并移动到第二个数据网格的内容。我想从第二个搜索结果中删除这些。
如何在Flex代码中快速高效地完成这项工作?
在两个数组集合上禁用AutoUpdate()
循环浏览第一个,对于第二个中的每一项,如果第一个中存在,则将其删除(或者根据您真正想要的内容调整算法-不确定)
enableAutoUpdate()。
如果不调度任何事件,则可以快速循环数组集合。
第二种选择是,您还可以循环遍历一个由数组组成的廉价副本,该数组是arraycollection.source.contat(),如果您的所有项都是同一类型,则甚至可以循环遍历向量。这将提供最大的速度,但从长远来看,您可能会失败,因为您需要在最后转换回数组集合。
所以我会坚持第一种选择。
目前,我已经实现了一个散列集合(扩展了ArrayCollection)。哈希只允许唯一的值,所以最终,即使UI可能会让用户感到困惑,它也能达到我的目的。稍后可能会实现上述方法。:)