3

我想在 Flex 中迭代一个 ArrayCollection,同时可以添加和删除项目。

因为我没有找到像在 Java 中那样使用“经典”迭代器的方法,它可以完成这项工作。我试过光标。但它并没有真正按照我想要的方式工作;)那么我该怎么做呢?


    var cursor:IViewCursor = workingStack.createCursor();

    while (!cursor.afterLast)
    {
        // Search
                    deepFirstSearchModified(cursor.current.node,nodeB,cursor.current.way);
        // Delete Node
        cursor.remove();
        // Next Node
        cursor.moveNext();

    }
4

5 回答 5

3

我认为最好使用 New Collection/Array 进行操作

private function parseSelectedItem(value:IListViewCollection):IListViewCollection{
 var result:Array = new Array();
    for each(var item:Object in value)
    {
        //result.push();
        //result.pop();
    }
    return new ArrayCollection(result) ;
}

希望有帮助

于 2011-05-24T09:04:08.127 回答
2

尝试使用以下内容:

for (var i:int = myArrayCollection.length - 1; i >= 0; i--) {
   myArrayCollection.removeItemAt(i);
}
于 2011-05-24T11:41:51.317 回答
1

您的问题有一个解决方案:

http://www.ericfeminella.com/blog/actionscript-3-apis/

看看 CollectionIterator 类。

干杯

于 2011-05-24T08:54:33.103 回答
0

看看ActionLinq。它实现了 .Net Linq2Objects 模式,包括IEnumerable. 当然,您需要小心,因为您正在修改您正在迭代的项目......

var workingStack:ArrayCollection = getData();
var iterator:IEnumerable = Enumerable.from(workingStack);

for each(var item:String in iterator) {
  doSomethingTo(workingStack);
}
于 2011-05-24T09:27:13.243 回答
-1

在 flex(或 actionscript)中,您所做的任何更改都会立即可见。所以你可以做你想做的事情:

    for (var i : Number = myArrayCollection.length; i > 0; i--) {
       myArrayCollection.removeItemAt(i - 1);
    }

我认为这应该可以正常工作。

于 2011-05-24T08:41:28.097 回答