У меня есть данные, поступающие в линейном формате, например:
const data = [
{
"id": "1",
"parentId": null
},
{
"id": "1.1",
"parentId": "1"
},
{
"id": "1.2",
"parentId": "1"
},
{
"id": "2",
"parentId": null
},
{
"id": "2.1",
"parentId": "2"
},
{
"id": "3",
"parentId": null
},
{
"id": "3.1",
"parentId": "3"
},
{
"id": "3.1.1",
"parentId": "3.1"
},
{
"id": "3.1.1.1",
"parentId": "3.1.1"
}
];
Я хочу преобразовать их в иерархический формат, например:
const hierarchicalData = [
{
"id": "1",
"children": [
{
"id": "1.1",
},
{
"id": "1.2",
}
]
},
...
]
Я понимаю, что должен быть уровень рекурсии, который может продолжаться, но я застрял в том, чтобы пройти первый уровень, не прибегая к грубой силе, зная количество уровней заранее.
Я занимаюсь этим уже около 3 часов и не могу понять, как это сделать.
Вот пример, демонстрирующий мою проблему:
var output = [];
$.each(data, function(index, value) {
if (value.parentId === null) {
value.children = [];
output.push(value);
} else {
$.each(output, function(innerIndex, innerValue) {
if (value.parentId === innerValue.id) {
innerValue.children.push(value);
return;
}
});
}
});
console.log(output);