zoukankan      html  css  js  c++  java
  • id,pid数组转拓扑树结构

     var source = [
       
         { id:1,pid:0,value:"节点1" },
         { id:2,pid:1,value:"节点11" },
         { id:3,pid:1,value:"节点12" },
         { id:4,pid:1,value:"节点13" },
         { id:5,pid:0,value:"节点2" },
         { id:6,pid:5,value:"节点21" },
         { id:7,pid:5,value:"节点22" },
         { id:8,pid:5,value:"节点23" },
         { id:9,pid:0,value:"节点3" },
         { id:10,pid:9,value:"节点31" },
         { id:11,pid:10,value:"节点32" },
         { id:12,pid:11,value:"节点33" },
         { id:13,pid:12,value:"节点34" },
         { id:14,pid:13,value:"节点35" },
         { id:15,pid:14,value:"节点36" },
         { id:16,pid:0,value:"节点4" }
       
       ]
         function toTree(data) {
           let result = []
           if (!Array.isArray(data)) {
             return result
           }
           data.forEach(item => {
               delete item.children;
           });
           let map = {};
           data.forEach(item => {
               map[item.id] = item;
           });
           data.forEach(item => {
             let parent = map[item.pid];
             if (parent) {
                 (parent.children || (parent.children = [])).push(item);
             } else {
                 result.push(item);
             }
           });
           return result;
         }
         console.log(toTree(source))
     
  • 相关阅读:
    JSP前三章测试改错
    实现文件上传
    Url和Uri的区别
    四套读写文件方案
    C++第一课
    数据聚合架构模式
    高并发怎么解决?
    为什么做不了软件架构师
    完整版go-mysql-elasticsearch安装步骤
    安装GO
  • 原文地址:https://www.cnblogs.com/sysg/p/13565302.html
Copyright © 2011-2022 走看看