const arr = [
{ 'id': '29', 'pid': '', 'name': '总裁办' },
{ 'id': '2c', 'pid': '', 'name': '财务部' },
{ 'id': '2d', 'pid': '2c', 'name': '财务核算部'},
{ 'id': '2f', 'pid': '2c', 'name': '薪资管理部'},
{ 'id': 'd2', 'pid': '', 'name': '技术部'},
{ 'id': 'd3', 'pid': 'd2', 'name': 'Java研发部'}
]
创建函数并且在arr找pid为第二次参数的元素,组成一个数组
function findChildren(arr,pid=''){
//在list中根据pid来找元素
let treeArr = []
//筛查出来pid=''的 也就是第一层
treeArr = arr.filter(it => it.pid ===pid)
//在通过循环加递归的方法将第二层和第三层放入到children中
treeArr.forEach(item => {
item.children = findChildren(arr,item.id)
})
return treeArr
}
结果
const treeArr = [
{ 'id': '29', 'pid': '', 'name': '总裁办',children: [] },
{ 'id': '2c', 'pid': '', 'name': '财务部', children:[
{ 'id': '2d', 'pid': '2c', 'name': '财务核算部',children: []},
{ 'id': '2f', 'pid': '2c', 'name': '薪资管理部',children: []},
] },
{ 'id': 'd2', 'pid': '', 'name': '技术部', children: [
{ 'id': 'd3', 'pid': 'd2', 'name': 'Java研发部',children: []}
]},
]