Учитывая массив в формате уровней и их непосредственные дочерние элементы, которые хранятся в последовательном массиве, возвращает n-арное дерево
Данный формат ввода:
[{'name':'a', 'level': -1},
{'name':'b', 'level': 0},
{'name':'c', 'level': 1},
{'name':'d', 'level': 2},
{'name':'e', 'level': 0},
{'name':'f', 'level': 1},
{'name':'g', 'level': 0}
];
Ожидаемый результат должен быть в формат ниже:
[
{
name:"a",
level:-1,
children: [
{
name:"b",
level:0,
children: [
{
name:"c",
level:1,
children: [
{
name:"d",
level:2,
children: [ ]
}
]
}
]
}
],
},
{
name:"e",
level:1,
children: [
{
name:"f",
level:2,
children: [ ]
}
]
},
{
name:"g",
level:2,
children: [ ]
}
]
Рекурсивное решение, которое я пытался реализовать, но не удалось
Код выше возвращает
function treeTraversal(arr, index) {
if (arr === null || arr.length === 0 || index === arr.length) {
return;
}
let result = [];
let children = [];
if (arr[index - 1].level + 1 === arr[index].level) {
children.push(arr[index]);
console.log(children);
treeTraversal(arr, index + 1);
}
arr[index - 1].children = children;
result.push(arr[index - 1]);
return result;
}
const arr = [{
'name': 'a',
'level': -1
},
{
'name': 'b',
'level': 0
},
{
'name': 'c',
'level': 1
},
{
'name': 'd',
'level': 2
},
{
'name': 'e',
'level': 0
},
{
'name': 'f',
'level': 1
},
{
'name': 'g',
'level': 0
}
];
console.log(treeTraversal(arr, 1));
неожиданные результаты. Пожалуйста, дайте мне знать, что не так с приведенным выше кодом