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

Я получаю данные в таком формате из базы данных, и нужно вывести их в виде дерева
  • Вопрос задан
  • 163 просмотра
Решения вопроса 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 - тот и есть корневой
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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