let input = [{
id: 1, val: ‘学校‘, parentId: null
},{
id: 2, val: ‘班级1‘, parentId: 1
},{
id: 3, val: ‘班级2‘, parentId: 1
},{
id: 4, val: ‘学生1‘, parentId: 2
},{
id: 5, val: ‘学生2‘, parentId: 3
},{
id: 6, val: ‘学生3‘, parentId: 3
}]
let output = {
id: 1,
val: ‘学校‘,
children: [{
id: 2,
val: ‘班级1‘,
children: [
{
id: 4,
val: ‘学生1‘,
children: []
}
]
}, {
id: 3,
val: ‘班级2‘,
children: [
{
id: 5,
val: ‘学生2‘,
children: []
},{
id: 6,
val: ‘学生3‘,
children: []
}
]
}]
}
function arrToTree(arr){
let output = {}
for(let i = 0;i < arr.length;i++){
let item = arr[i]
if(item.parentId == null){
output.id = item.id
output.val = item.val
output.children = toTree(output.id,arr)
}
}
return output
}
function toTree(id,arr){
let children = []
for(let i = 0;i < arr.length;i++){
let item = arr[i]
if(id == item.parentId){
children.push({
id:item.id,
val:item.val,
children:toTree(item.id,arr)
})
}
}
return children
}
原文:https://www.cnblogs.com/zhenjianyu/p/13367164.html