首页 > 设计 > WEB开发 > 正文

13.2.过滤ArrayCollection

2023-07-22 12:39:15
字体:
来源:转载
供稿:网友
13.2.1. 问题
我需要对ArrayCollection 数据进行过滤,设置过滤器移除些不匹配的结果。

13.2.2. 解决办法
J 将原型为function(item:Object):Boolean 的函数传递给ArrayCollection 的filter 属性。如果返回true 表示值继续留在ArrayCollection,返回false 表示其值被移除。

13.2.3. 讨论
filterFunction 属性是由ListCollectionView 类定义,它是ArrayCollection 的父类。当过滤器函数被传递给继承自ListCollectionView 的任何子类后,这里为ArrayCollection 对象,应用过滤器后必须调用refresh 方法:
+展开
-ActionScript
import mx.collections.ArrayCollection;
private var coll:ArrayCollection;
private function init():void {
coll = new ArrayCollection([
{name:"Martin Foo", age:25},
{name:"Joe Bar", age:15},
{name:"John Baz", age:23},
{name:"Matt Baz", age:21}]);
coll.filterFunction = filterFunc;
coll.refresh();
for(var i:int = 0; i<coll.length; i++) {
trace(coll.getItemAt(i).name);
}
}
private function filterFunc(value:Object):Object {
if(Number(value.age) > 21) {
return true;
}
return false;
}

这里需要注意的是ArrayCollection 元素并没有被过滤器函数所修改,在这个例子中,源数组有4个数据,过滤后仍保持4个数据。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表