编辑代码

function listToTree(arr) {
    const res = [];
    const map = {};
    for(let e of arr) {
        if(!map[e.id]) {
            map[e.id] = {
                children: []
            }
        }
        const item = map[e.id] = {
            ...e,
            children: map[e.id].children
        }
        if(e.pid === 0) {
            res.push(item)
        }else {
            if(!map[e.pid]) {
                map[e.pid] = {
                    children: []
                }
            }
            map[e.pid].children.push(item)
        }
    }
    console.log(map)
    return res;
}

const data = [
    { id: 2, name: '部门2', pid: 1 },
  { id: 1, name: '部门1', pid: 0 },
  { id: 3, name: '部门3', pid: 1 },
  { id: 4, name: '部门4', pid: 3 },
  { id: 5, name: '部门5', pid: 4 },
  { id: 7, name: '部门7', pid: 6 },
];
console.log(JSON.stringify(listToTree(data)))