【題目】:
//A轉化成B
const A = [{id:2, parentId: 1},{id: 1}, {id: 3, parentId: 2}, {id: 5, parentId: 4},{id: 4}]
const B = [{id: 1, child: [{id: 2, parentId: 1, child: [{ id: 3, parentId: 2}]}]}, {id: 4, child: [{id: 5, parentId: 4}]}]
【具體實現】:
function convert(A) {
let nodes = {}
let AClone = JSON.parse(JSON.stringify(A))
for (let node of AClone) {
nodes[node.id] = node
}
for (let node of AClone) {
if (node.parentId) {
if (!nodes[node.parentId]['child']) {
nodes[node.parentId]['child']=[]
}
nodes[node.parentId].child.push(node)
}
}
let B = []
for (let i in nodes) {
if (!nodes[i].parentId) {
B.push(nodes[i])
}
}
return B
}
const A = [{id:2, parentId: 1},{id: 1}, {id: 3, parentId: 2}, {id: 5, parentId: 4},{id: 4}]
let result = convert(A)
console.log(JSON.stringify(result,undefined, 2))