// 转换函数
function arrayToTree(array, levelName = "level", childrenName = "children") {
// 定义递归函数
function recursive(array, parentId, level) {
// 定义结果数组
const result = [];
// 遍历数组
for (let item of array) {
// 如果当前节点的父节点id等于pid
if (item.parentId === parentId) {
// 给当前节点添加层级属性
item[levelName] = level;
// 找到当前节点的子节点
const children = recursive(array, item.id, level + 1);
// 如果有子节点,给当前节点添加children属性
if (children.length) {
item[childrenName] = children;
}
// 把当前节点加入结果数组
result.push(item);
}
}
// 返回结果数组
return result;
}
// 调用递归函数,传入初始pid为0,初始level为1
return recursive(array, 0, 1);
}
let a = [
{
id:1,
name:'1',
parentId:7,
},
{
id:2,
name:'2',
parentId:7,
},
{
id:3,
name:'3',
parentId:2,
},
{
id:4,
name:'4',
parentId:4,
},
{
id:5,
name:'5',
parentId:3,
},
{
id:7,
name:'0',
parentId:0,
},
]
console.log(arrayToTree(a))
console