首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flex中actionscript 3中for循环的基础知识

flex中actionscript 3中for循环的基础知识
EN

Stack Overflow用户
提问于 2011-03-24 01:54:28
回答 5查看 3.1K关注 0票数 0

早上好堆栈溢出...我有个问题...这是我的示例代码

代码语言:javascript
复制
var i:Number = new Number();

trace("showarray length" + showArray.length);

for(i=0;i<showArray.length;i++){

    trace("equal daw" + showArray.getItemAt(i).id + "==" + num);

    if(showArray.getItemAt(i).id == num){
        showArray.removeItemAt(i);

    }
}
trace('alerts');

我的问题在这里is...wherenever,如果它满意,它停止循环,它立即走出循环

这是一个样例输出,假设showArray的长度为2,num =0

showarray length2

等于daw0==0

警报

请帮帮我

EN

回答 5

Stack Overflow用户

发布于 2011-03-24 02:09:22

如果要在迭代数组时删除项,请按相反的顺序进行迭代。这样,移除元素不会影响循环条件:

代码语言:javascript
复制
for (var i:int = showArray.length - 1; i >= 0; i--) {
    if (someCondition) {
        showArray.removeItemAt(i);
    }
}

另一个小好处是,这会稍微快一点,因为它不会在每一步都调用showArray.length。

票数 8
EN

Stack Overflow用户

发布于 2011-03-24 03:26:29

更好的方法可能是使用Array类的filter方法。

代码语言:javascript
复制
array = array.filter(function (e:*, i:int, a:Array):Boolean {
        return e.id != num;
    });
票数 3
EN

Stack Overflow用户

发布于 2011-03-24 02:02:53

当您的if满足id == num (在第一个循环中为0)并删除该项时,您的数组长度将减少为1,因此循环将不再运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5409507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档