2013-11-28 3 views
0

Это мой массив ArrayCollection. Я хочу удалить «Ярлык:« Налоги », значение: 2000» из этого массива. Ребята, как это можно сделать без использования forloops или использования forloop?Как удалить элементы из массива ArrayCollection в flex?

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); 
} 

} 

Надеется, что это может помочь вам.

Смежные вопросы