我想知道迭代长度在循环内变化的数组的可靠和/或标准方法是否以及什么是。我问是因为每次我想做的时候我都会选择不同的方法来做这件事,例如
for ( var i = 0; i < myarray.length; i++ ) {
if (myarray[i] === 'something') {
myarray.splice(i, 1);
// *to avoid jumping over an element whose index was just shifted back to the current i
i--;
}
}
或
var i = 0;
while (myarray[i]) {
if (myarray[i] === 'something') {
myarray.splice(i, 1);
} else {
i++;
}
}
这些是我发现自己这样做的方式,但我很好奇是否有标准方法。
最佳答案
我发现在另一个方向上迭代更简单:
for (var i=myarray.length; i--; ) {
if (myarray[i] === 'something') myarray.splice(i, 1);
}
这样您就不必在删除时更改增量。
许多开发人员,尤其是那些在 JavaScript 之前没有接触过类 C 语言的开发人员,发现处理递减运算符的微妙之处时感到困惑。我写的循环也可以写成
for (var i=myarray.length-1; i>=0; i--) {
关于javascript - 删除元素时循环遍历数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17319511/