Подтвердить что ты не робот

Как удалить элемент в списке, используя 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.

4b9b3361

Ответ 2

Используйте правильные инструменты для правильной работы. В этом случае:

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

или, как предложил @nnnnnn, выполните цикл в обратном направлении:

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

Однако вам следует рассмотреть возможность использования Array.prototype.filter():

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

или библиотеку служебных функций, такую как lodash или underscore, которые предоставляют функцию для удаления элементов из массива:

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

Преимущество последних двух заключается в том, что ваш код становится более читабельным.

Ответ 3

ForEach, поскольку ES5 можно использовать вместе с индексом:

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

Ответ 4

Вы можете сделать это очень легко с помощью filter():

var people = ['alex','jason','matt'];

var shortPeople = people.filter(function(p){
    return p.length <= 4);
});

console.log(people);
console.log(shortPeople);