js通过id pid 遍历集合获得树结构
标签搜索
侧边栏壁纸
博主昵称
2c

  • 累计撰写 19 篇文章
  • 累计收到 12 条评论

js通过id pid 遍历集合获得树结构

2c
2c
2022-05-19 / 0 评论 / 11 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年05月23日,已超过704天没有更新,若内容或图片失效,请留言反馈。

  node=[{id:1,pid:0,name:"吉林省"},
        {id:2,pid:1,name:"长春市"},
        {id:3,pid:1,name:"松原市"},
        {id:4,pid:0,name:"辽宁省"},
        {id:5,pid:4,name:"沈阳市"},
        {id:6,pid:3,name:"扶余县"}
       ]
/*
    通过定义map,key当前对象id,  value该对象
    遍历集合,得到对象顶级节点放到集合中返回
    不是顶级的就是当前对象的子节点,将对象放到该节点下,这一段比较抽象
*/

function toTree(node){
    node.forEach(function(it){
        delete it.children;
    })
    // 定义map/
    var map = {};
    // 这里可以重构数据类型,放回字段值
    node.forEach(function(it){
        map[it.id]=it;
    })
    
    // 定义返回集合
    var val=[];
    node.forEach(function(it){
        var parent = map[it.pid];
        if(parent){
            // 有数据说明不是顶级节点,将数据放到该 children 子节点下
            ((parent.children) || (parent.children=[])).push(it);
        }else{
            // 没有数据说明是顶级节点放到val中
            val.push(it);
        }
    });
    return val;
}

console.log(JSON.stringify(toTree(node)))``



原文章

0

评论 (0)

取消