数组转树结构_放飞的回忆-编程思维

    
转换成  

 转换方法:

 function arrToTree(data) {
     if(!Array.isArray(data)) return data
     if(!data.length) return data

      let nData = JSON.parse(JSON.stringify(data)) // 数组深拷贝,避免影响源数据
      let result = []
      let map = {};
      nData.forEach(item => { // 遍历数组 把每一项的引用放入map对象里
        map[item.id] = item;
      });
      nData.forEach(item => { // 再次遍历数组 决定item的去向
        let parent = map[item.parentId];
        if (parent) {
          // 如果 map[item.parentId] 有值 则 parent 为 item 的父级
          // 判断 parent 里有无children 如果没有则创建 如果有则直接把 item push到children里
          (parent.children || (parent.children = [])).push(item);
        } else {
          // 如果 map[item.parentId] 找不到值 说明此 item 为 第一级
          result.push(item);
        }
      });
      return result;
}

 

 

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/ziyoublog/p/16716393.html