Как вы пишете функцию, которая будет выполнять разглаживающее преобразование массива объектов узлов, который представляет структуру каталогов или дерево путей маршрутизации. Кроме того, если любые пути включают создание пустых узлов, как вы создаете эти узлы для структуры результата. Пустые каталоги имеют только свой путь и дочерние ключи. Вот пример массива узлов:
Например, если nodes = [{id: 50, path: "/apple/banana"}]
, вернуть
{
"path": "/",
"children": [
{
"path": "/apple",
"children": [
{
"id": 50,
"path": "/apple/banana",
"children": []
}
]
}
]
}
У меня есть это:
const tree = { path: '/', children:[] }
const sortedNodes = nodes.sort((a, b) => (a.path.split('/').length - b.path.split('/').length));
sortedNodes.forEach(node => {
const dirs = node.path.split('/').slice(1)
let traversed = tree // Hold the reference of tree
dirs.forEach((dir) => {
const foundChild = traversed.children.find(child => child.path.split('/').slice().pop() === dir)
foundChild ? traversed = foundChild : traversed.children.push({ path: node.path, id: node.id, children: [] });
})
})
console.log(tree);