// 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))