如何使用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循环。
你不应该修改你正在循环的数组。 但是,您可以制作一个新的:
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); } });