【问题标题】:How remove items from ArrayCollection in flex?如何从 flex 中的 ArrayCollection 中删除项目?
【发布时间】:2013-11-28 04:15:36
【问题描述】:

这是我的 ArrayCollection 我想从这个 arrayCollection 中删除“Label:”Taxes”, Value:2000” 行。伙计们,不使用 forloops 或使用 forloop 怎么能做到这一点?

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

【问题讨论】:

    标签: actionscript-3 apache-flex flex4 flex3 flex4.5


    【解决方案1】:

    为此,您需要了解项目索引。 所以expenses.removeItemAt(0) 会为你工作。 如果您有对象但不知道索引,您可以使用expenses.getItemIndex(myObject) 获取它,然后将其删除。

    【讨论】:

      【解决方案2】:
                  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);
                      }
                  } 
      

      【讨论】:

        【解决方案3】:

        //使用“remove”方法删除对象如下:

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

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-19
          • 1970-01-01
          • 1970-01-01
          • 2011-09-26
          • 1970-01-01
          • 2011-10-05
          • 1970-01-01
          • 2013-05-01
          相关资源
          最近更新 更多