编辑代码

// const arr = [
//   { 'id': '29', 'pid': '', 'name': '总裁办' },
//   { 'id': '2d', 'pid': '2c', 'name': '财务核算部' },
//   { 'id': '2f', 'pid': '2c', 'name': '薪资管理部' },
//   { 'id': 'd2', 'pid': '', 'name': '技术部' },
//   { 'id': '2c', 'pid': '', 'name': '财务部' },
//   { 'id': 'd3', 'pid': 'd2', 'name': 'Java研发部' }
// ]
const arr = [
    {
        "id": "02",
        "name": "小亮",
        "pid": "01",
        "job": "产品leader "
    },
    {
        "id": "22",
        "name": "ssss",
        "pid": "",
        "job": "项目经理"
    },
    {
        "id": "03",
        "name": "小美",
        "pid": "01",
        "job": "UIleader"
    },
    {
        "id": "04",
        "name": "老马",
        "pid": "01",
        "job": "技术leader"
    },
    {
        "id": "05",
        "name": "老王",
        "pid": "01",
        "job": "测试leader"
    },
    {
        "id": "06",
        "name": "老李",
        "pid": "01",
        "job": "运维leader"
    },
    {
        "id": "07",
        "name": "小丽",
        "pid": "02",
        "job": "产品经理"
    },
    {
        "id": "08",
        "name": "大光",
        "pid": "02",
        "job": "产品经理"
    },
    {
        "id": "09",
        "name": "小高",
        "pid": "03",
        "job": "UI设计师"
    },
    {
        "id": "10",
        "name": "小刘",
        "pid": "04",
        "job": "前端工程师"
    },
    {
        "id": "11",
        "name": "小华",
        "pid": "04",
        "job": "后端工程师"
    },
    {
        "id": "12",
        "name": "小李",
        "pid": "04",
        "job": "后端工程师"
    },
    {
        "id": "13",
        "name": "小赵",
        "pid": "05",
        "job": "测试工程师"
    },
    {
        "id": "14",
        "name": "小强",
        "pid": "05",
        "job": "测试工程师"
    },
    {
        "id": "15",
        "name": "小涛",
        "pid": "06",
        "job": "运维工程师"
    },
    {
        "id": "01",
        "name": "张大大",
        "pid": "",
        "job": "项目经理"
    },
]
function transform(data) {
    let map = {}, result = []
    data.forEach(item => {
        const newItem = {
            ...item,
            children: map[item.id] ? map[item.id].children : []
        }

        if (!item.pid) {
            result.push(newItem)
        } else {
            const parent = map[newItem.pid] || {
                children: []
            }
            parent.children.push(newItem)
            map[newItem.id] = newItem
            map[newItem.pid] = parent
        }
    })
    return result
}
console.log(JSON.stringify(transform(arr), undefined, 2))