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

Как отфильтровать массив в массиве?

Есть массив:

const array = [
        {
            "id": "1",
            "name": "test",
            "array2": [
                null,
                "666",
                "99999"
            ]
        },
        {
            "id": "1",
            "name": "test",
            "array2": [
               null,
                null,
                "2222",
                "5555"
            ]
        }
]

Нужно избавиться от null во вложенных массивах.
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Как будем определять, должен ли элемент остаться: const mustStay = n => n !== null;.

Собираем новый массив:

const newArr = arr.map(n => ({
  ...n,
  array2: n.array2.filter(mustStay),
}));

Обновляем существующий:

arr.forEach(n => n.array2.reduceRight((_, n, i, a) => mustStay(n) || a.splice(i, 1), 0));

// или

for (let i = 0; i < arr.length; i++) {
  const a = arr[i].array2;
  a.splice(0, a.length, ...a.filter(mustStay));
}

// или

for (const { array2: a } of arr) {
  let numDeleted = 0;

  for (const [ i, n ] of a.entries()) {
    a[i - numDeleted] = n;
    numDeleted += !mustStay(n);
  }

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

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

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