Zhanna_K
@Zhanna_K
in progress

Как преобразовать данный список в дерево?

Испытываю сложность с тем, как сделать из данного списка иерархическую структуру...здесь явно не указан главный узел, от которого строить дерево. Как можно его определить?
const data = [
	{ id: 'main', parts: ['main-left', 'main-right'] },
	{ id: 'main-101', parts: undefined },
	{ id: 'main-102', parts: undefined },
	{ id: 'main-head', parts: undefined },
	{ id: 'main-left', parts: ['main-101', 'main-102'] },
	{ id: 'main-right', parts: ['main-head'] },
];

Я получаю данные в таком формате из базы данных, и нужно вывести их в виде дерева
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега JavaScript
function createTree(arr) {
  const tree = Object.fromEntries(arr.map(({ parts, ...n }) => [ n.id, n ]));
  arr.forEach(n => tree[n.id].children = n.parts?.map(m => tree[m]) ?? []);
  return Object.values(tree).filter(n => arr.every(m => !m.parts?.includes(n.id)));
}
Ответ написан
SagePtr
@SagePtr
Еда - это святое
Который ни разу не фигурирует в parts - тот и есть корневой
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽
25 нояб. 2020, в 19:58
35000 руб./за проект
25 нояб. 2020, в 19:13
1000 руб./в час
25 нояб. 2020, в 18:34
100000 руб./за проект