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

Как удалить объект из массива если в свойстве объекта присутствует null?

https://codepen.io/anon/pen/KZWvvG?editors=0010

Нужно очистить массив от null и undefined
С массивом arr1 все получилось, а с arr2 не работает, потому что в массив приходят объекты.
Не знаю как пройтись по свойствам, выявить null и undefined и если они есть, то удалить их объект полностью из массива.

UPD:
Если раскомментировать 7 строчку - arr2.push(key.name) и закоментировать 8ю
то в arr2 попадут значения из свойства name, но почему то очистка уже не работает arr2.clean(), почему так происходит?
  • Вопрос задан
  • 540 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
var filteredArray = sourceArray.filter(function(e) {
  return e.someKey !== null && e.someKey !== undefined;
});


По поводу ваших велосипедов с Array.prototype.clean. Оставьте эту затею, так делать не принято. Ваша функция clean, помимо null и undefined удаляет из массива элементы со значением 0 и пустые строки.
Используйте функцию filter.
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Если проверяется одно свойство:

const key = 'имя какого-то свойства';

const newArr = arr.filter(n => n[key] != null);

Несколько свойств:

const newArr = arr.filter(function(n) {
  return this.every(m => n[m] != null);
}, [ 'имя какого-то свойства', 'ещё одно', 'и ещё' ]);

Все свойства (тут вместо создания нового массива обновляем существующий):

let numDeleted = 0;

for (const [ i, n ] of arr.entries()) {
  arr[i - numDeleted] = n;
  numDeleted += Object.values(n).some(m => m == null);
}

arr.length -= numDeleted;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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