我想在flex中根据字符串分离数组集合。 我有一个 arraycollection,项目看起来像
{[(name:aa),(name:bb),(name:ae),(name:cc),(name:bd)}]
,现在我想根据“a”分隔此 arraycollection,并将所有“a”项目添加到单独的 arraycollection 中。
数组集合声明如
[Bindable]
public var arr:ArrayCollection=new ArrayCollection([{name:"cards/a.png"},{name:"cards/b.png"},{name:"cards/ac.png"},{name:"af.png"},{name:"ad.png"},{name:"cards/bb.png"}]);
您的数组集合构造应该是
new ArrayCollection([{name:"aa"},{name:"bb"}]);
“(”应该是“{”。
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.utils.ObjectUtil;
public var wordCollection:ArrayCollection = new ArrayCollection([{name:"aa"}, {name:"bb"},
{name:"ae"}, {name:"cc"}, {name:"bd"}]);
public var charACollection:ArrayCollection = new ArrayCollection();
public var charBCollection:ArrayCollection = new ArrayCollection();
public var charCCollection:ArrayCollection = new ArrayCollection();
private function createCompleteHandler():void
{
wordCollection.filterFunction = splitByChars;
wordCollection.refresh();
trace(ObjectUtil.toString(charACollection));
trace(ObjectUtil.toString(charBCollection));
trace(ObjectUtil.toString(charCCollection));
}
private function splitByChars(item:Object):Boolean
{
var char:String = item.name.toString().charAt(0);
if (char.toLowerCase() == "a")
{
charACollection.addItem(item);
}
else if (char.toLowerCase() == "b")
{
charBCollection.addItem(item);
}
else if (char.toLowerCase() == "c")
{
charCCollection.addItem(item);
}
return true;
}
]]>
</fx:Script>
</s:Application>