function listToTree(data) {
let tree = [];
let map = {};
data.forEach(node => {
map[node.id] = { ...node, children: [] }
});
for(let id in map) {
let node = map[id];
if(node.parent_id === null) {
tree.push(node);
} else {
if(!map[node.parent_id]) {
map[node.parent_id] = { children: [] };
}
map[node.parent_id].children.push(node);
}
}
return tree;
}
let data = [
{
"id": 1444,
"name": "2023-073-B008",
"parent_id": null
},
{
"id": 1445,
"name": "2023-073-C008",
"parent_id": 1444
},
{
"id": 1446,
"name": "2023-073-A006",
"parent_id": 1444
}
];
let tree = buildTree(data);
console.log(JSON.stringify(tree, null, 2));