如何使用forEach删除列表中的元素?

var people = ['alex','jason','matt']; people.forEach(function(p){ if(p.length > 4){ //REMOVE THIS PERSON or pop it out of the list or whatever } }); console.log(people) //should return ['alex','matt'] 

我想从列表中删除一个元素,使用forEach循环。

       

网上收集的解决方案 "如何使用forEach删除列表中的元素?"

不应该修改你正在循环的数组。 但是,您可以制作一个新的:

 var newPeople = []; people.forEach(function(p){ if(p.length <= 4){ newPeople.push(p); } }); 

使用正确的工具来完成正确的工作。 在这种情况下:

 for (var i = 0; i < data.length; i++) { if (data[i].value === 5) { data.splice(i--, 1); } } 

或者像@nnnnnn所build议的那样,向后循环:

 for (var i = data.length-1; i >= 0; i--) { if (data[i].value === 5) { data.splice(i, 1); } } 

不过,你应该考虑使用Array.prototype.filter()

 data.filter(function (e) { return e.value !== 5; }); 

或实用函数库(如lodash或underscore) ,它们提供了从数组中删除元素的function:

 _.remove(data, function (e) { return e.value === 5; }); 

后两者的好处是你的代码变得更可读。

ForEach,因为ES5可以和索引一起使用:

 data.forEach(function (element, index) { if (element % 2 == 0) { data.splice(index, 1); } });