SOURCE

let treeData = [{
    id: 1,
    name: '11',
    pId: ''
},
{
    id: 2,
    name: '22',
    pId: 1
},
{
    id: 3,
    name: '33',
    pId: 2
},
{
    id: 4,
    name: '44',
    pId: ''
}];
// 递归处理
function changeTree(data, pId = '') {
    // 定义最后返回的数组
    let arrs = [];
    // 执行循环
    for (let i = 0; i < data.length; i++) {
        // 判断pId是否等于当前循环行的pId
        let item = data[i];
        if (pId === item.pId) {
            // 则递归执行
            let children = changeTree(data, item.id);
            if (children.length > 0) {
                item.children = children;
            }
            arrs.push(item); // 将最后处理完成的数据放入最后的数组
        }
    }
    return arrs;
}

console.log(changeTree(treeData))
console 命令行工具 X clear

                    
>
console