世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你|

放飞的回忆

园龄:7年10个月粉丝:61关注:3

数组转树结构

    
转换成  

 转换方法:

复制代码
 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;
}
复制代码

 

 

本文作者:放飞的回忆

本文链接:https://www.cnblogs.com/ziyoublog/p/16716393.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   放飞的回忆  阅读(40)  评论(0编辑  收藏  举报
历史上的今天:
2020-09-21 解决动画播放完后恢复到初始状态的问题
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起