扁平化数据转树形结构
let {
list
} = {
"msg": "success",
"code": 200,
"list": [{
"id": "1",
"code": "1",
"pCode": "0",
"name": "工业经济发展",
"fullName": "工业经济发展",
}, {
"id": "1-1",
"code": "1-1",
"pCode": "1",
"name": "总体规模",
"fullName": "工业经济发展-总体规模",
}, {
"id": "1-1-1",
"code": "1-1-1",
"pCode": "1-1",
"name": "工业总量",
"fullName": "工业经济发展-总体规模-工业总量",
}, {
"id": "1-2",
"code": "1-2",
"pCode": "1",
"name": "创新发展",
"fullName": "工业经济发展-创新发展",
}, {
"id": "1-2-1",
"code": "1-2-1",
"pCode": "1-2",
"name": "专精特新企业",
"fullName": "工业经济发展-创新发展-专精特新企业",
}, {
"id": "1-3",
"code": "1-3",
"pCode": "1",
"name": "数智赋能",
"fullName": "工业经济发展-数智赋能",
}, {
"id": "1-3-1",
"code": "1-3-1",
"pCode": "1-3",
"name": "工业互联网试点示范",
"fullName": "工业经济发展-数智赋能-工业互联网试点示范",
}, {
"id": "1-4",
"code": "1-4",
"pCode": "1",
"name": "开放合作",
"fullName": "工业经济发展-开放合作",
}, {
"id": "1-4-1",
"code": "1-4-1",
"pCode": "1-4",
"name": "新增外资项目",
"fullName": "工业经济发展-开放合作-新增外资项目",
}, {
"id": "1-5",
"code": "1-5",
"pCode": "1",
"name": "绿色发展",
"fullName": "工业经济发展-绿色发展",
}, {
"id": "1-5-1",
"code": "1-5-1",
"pCode": "1-5",
"name": "六大高耗能行业能耗情况",
"fullName": "工业经济发展-绿色发展-六大高耗能行业能耗情况",
}]
}
const treeDate = (list, id, pid = 0, lable = 'name') => {
let treeList = list.reduce((pre, cur) => {
pre[cur[id]] = cur;
return pre
}, {})
let result = list.reduce((prev, cur) => {
let parentId = cur[pid];
cur.lable = cur[lable]
cur.value = cur.id
let parent = treeList[parentId]
if (parent) {
parent.children ? parent.children.push(cur) : parent.children = [cur]
} else if (parentId === '0') {
prev.push(cur)
}
return prev
}, [])
return result
}
const resultTree = treeDate(arr, 'code', 'pCode')
console.log(resultTree)