js树形结构

135 阅读1分钟
let data = [
    { id: '1', name: '大明', pId: '0', },
    { id: '2', name: '二哈', pId: '1' },
    { id: '3', name: '二狗', pId: '1' },
   // { id: '4', name: '1-1-1', pId: '2' },
   // { id: '5', name: '1-1-2', pId: '2' },
    { id: '6', name: '大黄', pId: '0' },
  ];
 dataBase (data) {
    let obj = {};
    let arr = []
    data.forEach(item => (obj[item.id] = item))
    console.log('data', data)
    console.log('Obj', obj)//
    
    data.forEach(el => {
    //el.pId为: 0,1,1,0,那obj[el.pId]就是obj[0]不存在,obj[1]大明,obj[1]大明,obj[0]不存在
      let parent = obj[el.pId] // 说明obj[el.pId]这条数据有子元素,也就是大明
      console.log('parent', parent)
      if (parent) {
        parent.childred ? parent.childred : parent.childred = []
        parent.childred.push(el)
      } else {
        arr.push(el)
      }
    });
    console.log(arr)
    return arr
    // data.map(item => {
    //   if (item.pId != 0) {
    //     obj[item.pId].children ? obj[item.pId].children.push(item) : (obj[item.pId].children = [item]);
    //   }
    // });
    // return data.filter(item => item.pId == 0);


  },

obj的数据