2014-01-21 75 views
0

我想根據flex中的字符串來分隔arraycollection。 我有一個arraycollection項目看起來像{[(name:aa),(name:bb),(name:ae),(name:cc),(name:bd)}], 現在我想分開這個arraycollection基於'a'和所有'a'項目被添加到獨立的arraycollection。如何使用actionslpt根據Flex中的字符串分隔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"}]); 

回答

0

你的ArrayCollection ArrayCollection的建設申報應該是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> 
相關問題