使用Flex有效地拼接数组中的项目

时间:2009-08-14 19:04:03

标签: flex flash actionscript-3 air

我已经克服了一个问题,但我的解决方案似乎效率低下且笨重。请考虑这个问题:

我有一个包含文章的数组。

此数组集合将过滤为当前选定的文章类别。

有一个光标绑定到一个显示当前文章的视图。

当一个类别被删除时,我需要删除orphened文章,我不能使用游标或集合而不影响视图,因为它们受到约束。

我可以在源代码上进行迭代,但如果我从源代码中删除(拼接),我必须打破并重新开始,因为所有文章索引都会更改,即使每个文章都使用它们。

这似乎是一种非常低效的处理方式,我确信有更好的方法可以做到这一点,通过在同一个源上使用另一个itterator,或解除unill我已完成更新的视图等等< / p>

如果我错过了一个技巧,请告诉我,因为我确信这是一个非常常见的问题/问题。

由于

罗布

P.S。在我的iPhone上写了这个。对不起任何错误!

2 个答案:

答案 0 :(得分:1)

向后运行循环。

所以,而不是说:

var len:int = arr.length;
for(var i:int = 0; i < len; i++) {
    if(some condition) {
        arr.splice(i,1);
    }
}

这样做:

for(var i:int = arr.length - 1; i >= 0; i--) {
    if(some condition) {
        arr.splice(i,1);
    }
}

答案 1 :(得分:0)

最简单的解决方案可能只是保存您需要在临时数组中删除的索引。然后,在遍历集合之后,返回并删除临时数组中的项目。

但是从我可以收集的内容来看,你应该使用散列(Object)或其他东西而不是数组结构。