SOURCE

// 转换函数
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 命令行工具 X clear

                    
>
console