我希望迭代Flex中的ArrayCollection,同时可以添加和删除项目。
因为我没有找到一种方法来使用Java中的“经典”迭代器,它可以完成这项工作。我试过Cursor。但它并不像我希望的那样真正起作用;)那么我该如何做得很好呢?
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();
}
答案 0 :(得分: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) ;
}
希望有所帮助
答案 1 :(得分:2)
尝试使用以下内容:
for (var i:int = myArrayCollection.length - 1; i >= 0; i--) {
myArrayCollection.removeItemAt(i);
}
答案 2 :(得分:1)
答案 3 :(得分:0)
看看ActionLinq。它实现了.Net Linq2Objects模式,包括IEnumerable
。当然,你需要小心,因为你正在修改你正在迭代的项目......
var workingStack:ArrayCollection = getData();
var iterator:IEnumerable = Enumerable.from(workingStack);
for each(var item:String in iterator) {
doSomethingTo(workingStack);
}
答案 4 :(得分:-1)
在flex(或actionscript)中,您所做的任何更改都会立即显示。所以你可以在for中做你想做的事情:
for (var i : Number = myArrayCollection.length; i > 0; i--) {
myArrayCollection.removeItemAt(i - 1);
}
我认为应该可以正常工作。