一.转化前数组格式如下:
// [
// { 'id': '3129', 'pid': '', 'name': '总裁办' },
// { 'id': '312a', 'pid': '', 'name': '行政部' },
// { 'id': '312b', 'pid': '', 'name': '人事部' },
// { 'id': '312c', 'pid': '', 'name': '财务部' },
// { 'id': '312d', 'pid': '312c', 'name': '财务核算部'},
// { 'id': '312e', 'pid': '312c', 'name': '税务管理部'},
// { 'id': '312f', 'pid': '312c', 'name': '薪资管理部'},
// { 'id': '00d2', 'pid': '', 'name': '技术部'},
// { 'id': '00d3', 'pid': '00d2', 'name': 'Java研发部' },
// { 'id': '00d4', 'pid': '00d2', 'name': 'Python研发部'},
// { 'id': '00d5', 'pid': '00d2', 'name': 'Php研发部'},
// { 'id': '00d6', 'pid': '', 'name': '运营部' },
// { 'id': '00d7', 'pid': '', 'name': '市场部'},
// { 'id': '00d8', 'pid': '00d7', 'name': '北京事业部'},
// { 'id': '00d9', 'pid': '00d7', 'name': '上海事业部'}
// ]
二.转化代码如下:
function tranListToTreeData(list) {
const treeList = []
const map = {}
list.forEach(item => {
if(!item.children){
item.children = []
}
map[item.id] = item
})
list.forEach(item => {
const parent = map[item.pid]
if(parent){
parent.children = push[item]
}else{
treeList.push(item)
}
})
return treeList
}
三.代码注释如下: