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},
];
let output = {
id: 1,
val: '学校',
parentId: null,
children: [
{
id: 2,
val: '班级1'
}
]
}
function arrayToTree(array) {
let root = array[0];
array.shift();
let tree = {
id: root.id,
val: root.val,
children: array.length ? toTree(root.id, array) : []
};
return tree;
}
function toTree(parentId, array) {
let children = [];
let len = array.length;
for (let i = 0; i < len; i++) {
let node = array[i];
if (node.parentId === parentId) {
children.push({
id: node.id,
val: node.val,
children: toTree(node.id, array)
})
}
}
return children;
}
console.log(arrayToTree(input))