@sumrakx

Как развернуть вложенный массив?

Есть объект, который хранит данные в которых есть вложенные дочерние массивы. Я хочу, чтобы все вложенные дочерние массивы лежали на одном уровне в новом массиве.
5c3fc142768ca731915520.png
Есть идеи как это сделать - у меня в голову приходит только рекурсивное развертывание?
  • Вопрос задан
  • 762 просмотра
Решения вопроса 1
hack504
@hack504
Только рекурсивно.

const nested = {
  id: 1,
  children: [
    { id: 2 },
    { id: 3,
      children: [{ id: 5 }, { id: 6 }]
    },
    { id: 4 }
  ]
}

const flatten = function(obj) {
  const array = Array.isArray(obj) ? obj : [obj];
  return array.reduce(function(acc, value) {
    acc.push(value);
    if (value.children) {
      acc = acc.concat(flatten(value.children));
      delete value.children;
    }
    return acc;
  }, []);
}

flatten(nested); // => [ { id: 1 }, { id: 2 }, { id: 3 }, { id: 5 }, { id: 6 }, { id: 4 } ]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@akavato
frontend dev
Если я правильно понимаю, тебе нужно сделать плоский массив.
глянь реализацию flatten и flattenDeep в lodash
или тут готовое: MDN
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Александрия Москва
от 200 000 до 250 000 руб.
Foodtronics Москва
от 100 000 до 200 000 руб.
от 5 500 до 6 500 usd.
18 авг. 2019, в 19:05
2000 руб./за проект
18 авг. 2019, в 19:00
1500 руб./за проект