我正在尝试编辑一个数组并删除不符合特定条件的元素。如果我使用reverse for循环
结合.splice(index, n)
,代码就可以正常工作。我卡在用ES6的for...of
循环实现同样的功能上。
let array=[1,2,3];
//reverse for loop
for(var i=array.length - 1; i>=0; i--) {
if(array[i]>=2) {
/*Collect element before deleting it.*/
array.splice(i,1);
}
}
console.log(array);
// returns [1]
使用 for..of
let array=[1,2,3];
for(let entry of array) {
if(entry>=2) {
let index = array.indexOf(entry);
/*The array is being re-indexed when I apply
.splice() - the loop will skip over an index
when one element of array is removed*/
array.splice(index, 1);
}
}
console.log(array);
//returns [1,3]
是否有办法使用for...of
循环来实现这个功能?还是说我必须坚持使用反向for循环
?
更新:
我需要将不符合filter()
或逆向for循环
函数删除的元素收集到一个辅助数组中。
.filter
代替,更容易。 - CertainPerformancewhile
(链接:https://dev59.com/Smkw5IYBdhLWcg3wdKQv#9882349) - adiga