@jizzy

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

Есть массив:

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

Нужно избавиться от null во вложенных массивах.
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Собрать новый массив:

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

Обновить существующий:

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

// или

for (const { array2 } of arr) {
  array2.splice(0, array2.length, ...array2.filter(n => n !== null));
}

// или

for (let i = 0; i < arr.length; i++) {
  let numDeleted = 0;

  for (let j = 0; j < arr[i].array2.length; j++) {
    arr[i].array2[j - numDeleted] = arr[i].array2[j];
    numDeleted += arr[i].array2[j] === null;
  }

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

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

Войти через центр авторизации
Похожие вопросы