过滤arraycollection后,ArrayCollection索引已更改

时间:2011-10-07 09:11:04

标签: actionscript-3 flex flex4

我有一个高级数据网格,并使用arraycollection填充一些数据。我正在过滤arraycollection,更改了arraycollection索引。

Arraycollection:- [0] - name: abc
                  [1] - name: hello
                  [2] - name: hello1
                  [3] - name:hai

将arraycollection过滤为'hell'后,数组集显示如下:

Arraycollection:- 
                  [0] - name: hello1
                  [1] - name: hello

我可以在过滤后知道索引改变的原因吗?

* 没有用于过滤的服务器端代码。它只是弹性边过滤。

2 个答案:

答案 0 :(得分:2)

ArrayCollection不是关联数组或映射,它是由整数索引的普通数组的包装。

即,你不能拥有一个只包含索引1和2的元素的数组。

来自documentation of filter

  

对数组中的每个项执行测试函数,并为所有为指定函数返回true的项构造一个新数组。 如果某个项返回false,则它不会包含在新数组中。

答案 1 :(得分:0)

ArrayCollection有一些非常好的和独特的属性 One property is that it can be bound.
此绑定属性允许您将集合设置为Flex对象(如TileList)的数据提供者。
因此,当过滤集合时,TileList将使用过滤后的数据自动重新填充,而无需其他代码。

另一个属性是来源。这是未经过滤/未更改的数据。

当过滤器应用于集合时,新数据将是源减去过滤器测试失败的元素 如您所见,您的过滤器仅传递了2个项目并返回了2个元素的新集合 您不能假设任何给定元素的索引值不会改变 也可以使用arrCol.refresh();在应用数据绑定过滤器之后。