使用foreach循环从数组中删除元素是否可行?
var array = [1,2,3,4,5,6,7,8];
array.forEach(function(data){
if (data == 4) {
// do something here
}
});
console.log(array);
使用foreach循环从数组中删除元素是否可行?
var array = [1,2,3,4,5,6,7,8];
array.forEach(function(data){
if (data == 4) {
// do something here
}
});
console.log(array);
我建议不要使用forEach函数。它会影响迭代器并跳过下一个项目。更好的方法是使用反向for循环,并按索引删除项目。
var array = [1,2,3,4,5,6,7,8];
for (var i = array.length - 1; i > -1; i--) {
if (array[i] == 4) {
array.splice(i, 1);
}
}
Fiddle: https://jsfiddle.net/uu94y8Lx/
array.forEach(function(data){
if (data == 4){
console.log('done')
array.splice(data, 1);
}
});
正如mario所评论的,不建议在循环中修改正在循环的数组,因此您可以采用以下方式:
var array1 = [];
array.forEach(function(data){
if(array.length === 4){
array1.push(data);
}
});
您也可以像这样使用for循环:
var array = [1,2,3,4,5,6,7,8],i;
for (i = 0; i < array.length; ++i) {
if (array[i] === 4) {
array.splice(i--, 1);
}
}
console.log(array);
我不建议这样做。forEach函数遍历数组时,如果你删除当前或之前的一个元素,那么它会跳过数组中的下一个元素。话虽如此,如果你真的想要删除一个元素而不管遇到的问题,那么可以使用array.splice(data, 1)
来删除一个元素。
filter
呢?!!! - Bergi