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'] },
];

Я получаю данные в таком формате из базы данных, и нужно вывести их в виде дерева
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
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)));
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Который ни разу не фигурирует в parts - тот и есть корневой
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект