function toTree(
data,
id = 'id',
pid = 'pid',
children = 'children'
){
const result = []
if(!Array.isArray(data)){
return result
}
data.forEach(item=>{
delete item[children]
})
const map={}
data.forEach(item=>{
map[item[id]] = item
})
data.forEach(item =>{
const parent = map[item[pid]]
if(parent){
(parent[children] || (parent[children] = [])).push(item)
} else {
result.push(item)
}
})
return result
}
let arr = [
{id: 1, name: '部门1', pid: 0},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 1},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
]
toTree(arr)
输出结果:
[
{
"id": 1,
"name": "部门1",
"pid": 0,
"children": [
{
"id": 2,
"name": "部门2",
"pid": 1,
"children": []
},
{
"id": 3,
"name": "部门3",
"pid": 1,
"children": [
// 结果 ,,,
]
}
]
}
]