let obj = [{
                id: 1,
                name: ‘顶级1‘,
                pid: 0
            }, {
                id: 2,
                name: ‘顶级1 第二级1‘,
                pid: 1
            }, {
                id: 3,
                name: ‘顶级1 第二级2‘,
                pid: 1
            }, {
                id: 4,
                name: ‘第二级1 第三级1‘,
                pid: 2
            }, {
                id: 5,
                name: ‘第二级2 第三级2‘,
                pid: 3
            }, {
                id: 6,
                name: ‘第三级1 第四级‘,
                pid: 4
            }, {
                id: 7,
                name: ‘第五级‘,
                pid: 6
            }, {
                id: 8,
                name: ‘第六级‘,
                pid: 7
            }, {
                id: 9,
                name: ‘第7级‘,
                pid: 8
            }, {
                id: 10,
                name: ‘第8级‘,
                pid: 9
            }, {
                id: 11,
                name: ‘顶级2‘,
                pid: 0
            }];
 
            
               function convert(data, pid) {
                  let convertData = [];
                  data.forEach(item => {
                    if (item.pid == pid) {
                      convertData.push(item);
                      convertChild(data, item, item.id);
                    }
                  });
                  return convertData;
                }
                function convertChild(arr, parentItem, pid) {
                  parentItem.children = parentItem.children ? parentItem.children : [];
                  arr.forEach(item => {
                    if (item.pid == pid) {
                      parentItem.children.push(item);
                      convertChild(arr, item, item.id);
                    }
                  });
                  return parentItem.children;
                }
                
               let aaaa = convert(obj, 0);
               console.log(aaaa)
原文:https://www.cnblogs.com/mrt-yyy/p/13528051.html