JavaScript手写数组转树:用一个递归方法
function arrayToTree(arr) {
let nodeparent = arr[0]
let tree = {
id : nodeparent.id,
val : nodeparent.val,
children : arr.length > 0 ? totree(nodeparent.id, arr) : []
}
return tree
}
function totree(parentid, arr) {
let children = []
for (let i=0; i < arr.length; i++) {
let node = arr[i]
if (node.parentId === parentid) {
children.push({
id: node.id,
val: node.val,
children: totree(node.id, arr)
})
}
}
return children
}
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: 2
}, {
id: 6, val: '学生3', parentId: 3
},
]
console.log(arrayToTree(input))
输出: