@sumrakx

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

Есть объект, который хранит данные в которых есть вложенные дочерние массивы. Я хочу, чтобы все вложенные дочерние массивы лежали на одном уровне в новом массиве.
5c3fc142768ca731915520.png
Есть идеи как это сделать - у меня в голову приходит только рекурсивное развертывание?
  • Вопрос задан
  • 1037 просмотров
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

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