我想在 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();
}
我认为最好使用新集合/数组进行操作
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) ;
}
希望有帮助
尝试使用以下方法:
for (var i:int = myArrayCollection.length - 1; i >= 0; i--) {
myArrayCollection.removeItemAt(i);
}
有一个解决方案可以解决您的问题:
http://www.ericfeminella.com/blog/actionscript-3-apis/
看看 CollectionIterator 类。
干杯
看看ActionLinq。 它实现了.Net Linq2Objects模式,包括IEnumerable
。 当然,您需要小心,因为您正在修改正在迭代的项目......
var workingStack:ArrayCollection = getData();
var iterator:IEnumerable = Enumerable.from(workingStack);
for each(var item:String in iterator) {
doSomethingTo(workingStack);
}
在 flex(或 actionscript)中,您所做的任何更改都会立即可见。因此,您可以在以下方面做您想做的事:
for (var i : Number = myArrayCollection.length; i > 0; i--) {
myArrayCollection.removeItemAt(i - 1);
}
我认为这应该可以正常工作。