Задать вопрос
@slowkazak

Как правильно удалить из массива определенные элементы по ключу?

Добрый день! Вроде тривиальная задачка, но тем не менее она вогнала в некоторый ступор.
Есть массив
var arr= [{"ie":"false", "id:1"},{"ie":"true", "id:2"}];


Есть кусок кода который должен перебирать массив и если встречается ie=="false"
То удалять этот элемент из массива, если во всем массиве присутствуют все элементы с ie:"false" то, соответственно удалять их все

$.each(arr, function( key, value ) {
if (value.ie==='false') {
arr.splice(key.ie, 1);
console.log(arr.length);
}
});

Но, при переборе массива, для всех непоследних элементов с "ie":"false" возвращается вот такая вот ошибка
Uncaught TypeError: Cannot read property 'ie' of undefined
Собственно сам код https://jsfiddle.net/rfb7xLj1/
Может кто подскажет как победить?
  • Вопрос задан
  • 477 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@holfza
У Вас в key индекс объекта в массиве.
А у индекса нет свойства ie
arr.splice(key, 1);
Ответ написан
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
var arr = [{"ie":"false", "id:1"},{"ie":"true", "id:2"}];

console.log(arr.filter(function(e){
 return e.ie != "false";
})); 

//filter вернет новый массив, НО если нужно делать манипуляции именно с текущим, можно пойти таким путем:
var i = -1;
while(++i<arr.length){
   if(arr[i].ie == "false") arr.splice(i--, 1);
}
console.log(arr);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lyeskin
Вы же читаете value.ie , так почему внутри if'а у вас вдруг key.ie ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы