【发布时间】:2013-04-27 11:33:12
【问题描述】:
我有一个元素数组,需要从中删除某些元素。问题是 JavaScript 似乎没有 for each 循环,如果我使用 for 循环,我会遇到问题,它基本上试图检查数组边界之外的元素,或者由于索引更改而丢失数组中的元素.让我告诉你我的意思:
var elements = [1, 5, 5, 3, 5, 2, 4];
for(var i = 0; i < elements.length; i++){
if(elements[i] == 5){
elements.splice(i, 1);
}
}
问题是当元素[1]被移除时,元素[2]变成了元素[1]。所以第一个问题是某些元素从未被检查过。另一个问题是 .length 发生了变化,如果我对边界进行硬编码,那么我可能会尝试检查超出数组边界的元素。那么,完成这个极其简单的事情的最佳方法是什么?
【问题讨论】:
-
elements.splice(i--, 1); -
我不喜欢 "--" 或 "++" 语法,但是从数组 +1 的开头开始时很有用的提示
标签: javascript iteration bounds