早上好堆栈溢出...我有个问题...这是我的示例代码
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
警报
请帮帮我
发布于 2011-03-24 02:09:22
如果要在迭代数组时删除项,请按相反的顺序进行迭代。这样,移除元素不会影响循环条件:
for (var i:int = showArray.length - 1; i >= 0; i--) {
if (someCondition) {
showArray.removeItemAt(i);
}
}另一个小好处是,这会稍微快一点,因为它不会在每一步都调用showArray.length。
发布于 2011-03-24 03:26:29
更好的方法可能是使用Array类的filter方法。
array = array.filter(function (e:*, i:int, a:Array):Boolean {
return e.id != num;
});发布于 2011-03-24 02:02:53
当您的if满足id == num (在第一个循环中为0)并删除该项时,您的数组长度将减少为1,因此循环将不再运行。
https://stackoverflow.com/questions/5409507
复制相似问题