2013-11-28 32 views
0

這是我的ArrayCollection我想從此arrayCollection中移除「Label:」Taxes「,Value:2000」行。如果不使用forloops或使用forloop,那麼這些人怎麼能做到這一點?如何從Flex中的ArrayCollection中刪除項目?

public var expenses:ArrayCollection = new ArrayCollection([ 
      {Label:"Taxes", Value:2000}, 
      {Label:"Rent", Value:1000}, 
      {Label:"Bills", Value:100}, 
      {Label:"Car", Value:450}, 
      {Label:"Gas", Value:100}, 
      {Label:"Food", Value:200} 
     ]); 

回答

1
  public var expenses:ArrayCollection = new ArrayCollection([ 
      {Label:"Taxes", Value:2000}, 
      {Label:"Rent", Value:1000}, 
      {Label:"Bills", Value:100}, 
      {Label:"Car", Value:450}, 
      {Label:"Gas", Value:100}, 
      {Label:"Food", Value:200} 
     ]); 


      var tempArr:ArrayCollection = new ArrayCollection(); // temporary ArrayCollection 

      tempArr = ObjectUtil.copy(expenses) as ArrayCollection; //copy expences ArrayCollecttion to temp arrray before delete items 

      for(var i:int=0;i<expenses.length;i++) 
      { 
       if(expenses[i].Label.toString()==label) 
       { 
        tempArr.removeItemAt(i); 
       } 
      } 
2

爲此,您需要知道物品的索引。 所以expenses.removeItemAt(0)將爲你工作。 如果你有對象但不知道索引,你可以用expenses.getItemIndex(myObject)得到它,然後刪除它。

0

//使用 「刪除」 方法刪除對象如下:

trace("Remove First Item: "+ expenses.removeItemAt(0)); 

//刪除使用環路以下對象:

var indetToDelete:Object = expenses[expenses.length - expenses.length]; 

for(var item:int=0; item<expenses.length ; item++){ 
       trace("Label:"+expenses[item].Label+"Value:"+expenses[item].Value); 

if((expenses[item].Label == indetToDelete.Label) && (expenses[item].Value == indetToDelete.Value)){ 

expenses.removeItemAt(item); 
} 

} 

希望這可以幫助你。