2015-11-13 2 views
1

рассмотреть следующие вопросы:Как использовать Foreach или сращивание правильно

resultData.forEach(function(data) { 
    if (data.profile === undefined) { 
     resultData.splice(data, 1); 
    } 
    }); 

Существует экземпляр, где один из объектов resultData не имеет профиля. Поэтому я пытаюсь удалить его. Однако он фактически не удаляется, элемент, который удаляется, имеет профиль ...

Любые идеи о том, что я делаю неправильно?

Когда я console.log(resultData) Я вижу объекты, в частности те, у которых нет профилей.

splice Предположим, чтобы изменить массив на месте нет? Он возвращает массив удаленных элементов. Так что я делаю неправильно?

Я хочу, чтобы удалить объект из массива объектов, где профиль не определен я думал, что делает ...

+0

Это всегда плохая идея для изменения объекта, который повторяется. попробуйте сохранить индекс элемента, который вы хотите удалить, и сделайте это позже, или нажмите элементы, у которых есть профиль, в новый список/объект. – pensan

ответ

3

Используйте Array.prototype.filter, чтобы отфильтровывать результаты напрямую. Таким образом, у вас не будет никаких несоответствий из-за отсутствия индексов, и у вас не будет слотов, заполненных undefined в вашем массиве.

resultData = resultData.filter(function(data) { 
    return data.profile !== undefined; 
}); 
0

Лучше использовать Array.prototype.map метод:

var resultData = resultData.map(function(data) { 
    if (data.profile === undefined) { 
     return; 
    } 
    return data; 
}); 

Этот путь вы создадите новый массив без записей, имеющих data.profile === undefined.

+0

Уххх, я думаю, что '.filter()' было бы более подходящим. – jfriend00

Смежные вопросы