Necesito reformatear json con una consulta en un formato anidado específico
[
{
"id": 54,
"parent_id": null,
},
{
"id": 55,
"parent_id": 54,
},
{
"id": 56,
"parent_id": 54,
},
{
"id": 57,
"parent_id": 55,
},
{
"id": 58,
"parent_id": 55,
},
{
"id": 59,
"parent_id": 55,
}
]
Estoy buscando un algoritmo js para resolver este problema //El json anterior debe estar en este formato: //(no es preciso según los datos dados)
[
{
"id": 54,
"children": [
{ "id": 55, "children": [] },
{ "id": 53, "children": [
{ "id": 50, "children": [] }
]
}
]
}
]
Tengo este script que funciona, pero es muy poco eficiente para recorrer cada instancia y niño .................................. .................................................... ......
createDataSet(){
let array = []
let data = this.getData()
data.forEach(level => {
if(level.parent_id === null){
array.push({id: level.id, name: level.name, title: level.name, children: []})
}
});
array.forEach(element => {
data.forEach(level => {
if(level.parent_id === element.id){
element.children.push(
{id: level.id, name: level.name, title: level.name, children: []}
)
}
});
});
array.forEach(element => {
element.children.forEach(child => {
data.forEach(level => {
if(level.parent_id === child.id){
child.children.push(
{id: level.id, name: level.name, title: level.name, children: []}
)
}
})
})
})
array.forEach(element => {
element.children.forEach(child => {
child.children.forEach(granChild => {
data.forEach(level => {
if(level.parent_id === granChild.id){
granChild.children.push(
{id: level.id, name: level.name, title: level.name, children: []}
)
}
})
})
})
})
return array
}