SOURCE

function buildTree(nodes){
    const nodeMap = new Map();
    const result = [];

    nodes.forEach(node=>{
        node.children =[];
        nodeMap.set(node.id,node);
    })
    nodes.forEach(node=>{
        if(node.pid ===null){
            result.push(node);
        } else {
            const parent = nodeMap.get(node.pid);
            if(parent){
                parent.children.push(node)
            }
        }
    })
    return result
}
const nodes=[
    {id:1,pid:null},
    {id:2, pid:1},
    {id:3,pid:1},
    {id:4,pid:2},
    {id:5,pid:3}
]

console.log(buildTree(nodes))
console 命令行工具 X clear

                    
>
console