// 例如将 input 转成output的形式
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
},
]
let output = {
id: 1,
val: '学校',
children: [{
id: 2,
val: '班级1',
children: [
{
id: 4,
val: '学生1',
children: []
},
{
id: 5,
val: '学生2',
children: []
}
]
}, {
id: 3,
val: '班级2',
children: [{
id: 6,
val: '学生3',
children: []
}]
}]
}
function arrayToTree(array) {
let tree = {
id: array[0].id,
val: array[0].value,
children: array.length > 0 ? toTree(array[0].id, array) : []
}
return tree
}
function toTree(parentId, array) {
let children = []
for (i = 1; i < array.length; i++) {
if (array[i].parentId == parentId) {
children.push({
id: array[i].id,
val: array[i].val,
children: toTree(array[i].id, array)
})
}
}
return children
}
console.log(arrayToTree(input))