使用foreach从数组中删除项目 - JavaScript

时间:2015-06-04 18:09:15

标签: javascript functional-programming

是否可以使用foreach从数组中删除某些内容?

var array = [1,2,3,4,5,6,7,8];

array.forEach(function(data){
    if (data == 4) {
        // do something here
    }
});

console.log(array);

3 个答案:

答案 0 :(得分:2)

我不推荐这个。 forEach函数遍历数组,当您删除当前或前一项时,它将跳过数组中的下一项。话虽如此,如果你真的想删除一个项目,尽管遇到了问题,你可以使用array.splice(data, 1)删除一个项目。

答案 1 :(得分:1)

试试这样:

array.forEach(function(data){
   if (data == 4){
      console.log('done')
      array.splice(data, 1);
   }
});

另外,正如马里奥所评论的那样,不建议你修改你正在循环的阵列,所以你可以这样做:

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);

答案 2 :(得分:1)

我建议不要使用forEach函数。它会影响迭代器并跳过下一个项目。更好:使用反向循环并按索引删除项目。

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);
    }
}

小提琴:https://jsfiddle.net/uu94y8Lx/