算法

作者: TonyDuck | 来源:发表于2020-11-26 22:07 被阅读0次
    var list =[
        {
            name: '贵州',
            id: '01',
            parent: 0
        },
        {
            name: '白云',
            id: '010101',
            parent: '0101'
        },
        {
            name: '遵义',
            id: '0102',
            parent: '01'
        },

        {
              name: '贵阳',
              id: '0101',
              parent: '01'
          },
      ];

        var result = getTrees(list, 0);

        function getTrees(list, parentId) {
            let items = {};
            // 获取每个节点的直属子节点,*记住是直属,不是所有子节点
            for (let i = 0; i < list.length; i++) {
                let key = list[i].parent;
                if (items[key]) {
                    items[key].push(list[i]);
                } else {
                    items[key] = [];
                    items[key].push(list[i]);
                }
            }
            return formatTree(items, parentId);
        }

        function formatTree(items, parentId) {
            let result = [];
            if (!items[parentId]) {
                return result;
            }
            for (let t of items[parentId]) {
                t.children = formatTree(items, t.id)
                result.push(t);

                if (!t.children.length) {
                    delete t.children;
                }
            }
            
            return result;
        }

        console.log(result);
var list =[
      {
          name: '贵州',
          id: '01',
          parent: 0
      },
      {
          name: '白云',
          id: '010101',
          parent: '0101'
      },
      {
          name: '遵义',
          id: '0102',
          parent: '01'
      },

      {
            name: '贵阳',
            id: '0101',
            parent: '01'
        },
    ];

    function tree(list) {
        var map = {};
        list.forEach((v, i) => {
            map[v.id] = v;
        });

        var result = [];
        list.forEach(function (v, i) {
            var parent = map[v.parent];

            if(parent) {
              (parent.children || (parent.children = [])).push(v);
            } else {
                result.push(v);
            }
        });

        return result;
    }

相关文章

  • 匈牙利算法

    算法思想 算法流程 算法步骤 算法实现 python 算法应用

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • 机器学习算法

    机器学习的算法分监督算法和无监督 算法。监督算法包括回归算法,神经网络,SVM;无监督算法包括聚类算法,降维算法。...

  • 字符串匹配

    BF 算法和 RK 算法BM 算法和 KMP 算法

  • 垃圾回收算法有几种类型? 他们对应的优缺点又是什么?

    常见的垃圾回收算法有: 标记-清除算法、复制算法、标记-整理算法、分代收集算法 标记-清除算法 标记—清除算法包括...

  • 头条-手撕代码

    [toc] 图算法 以及最短路径算法 树算法 手写LRU 排序算法 链表算法

  • 关于一些算法

    我们平常说的算法按照使用方向加密算法,排序算法,搜索算法,优化算法,音视频处理算法,图片处理算法 1.加密解密算法...

  • 给我巨大影响的技术书籍

    算法《算法概论》《算法设计与分析基础》 Anany Levitin《算法引论》Udi Manber《算法导论》《什...

  • 缓存相关

    cache淘汰算法:LIRS 算法 缓存那些事 Redis缓存淘汰算法,LRU算法,LRU算法讲解

  • LZW压缩算法

    参考链接:超级简单的数据压缩算法—LZW算法压缩算法——lzw算法实现LZW算法 LZW 压缩算法正确图解

网友评论

      本文标题:算法

      本文链接:https://www.haomeiwen.com/subject/rzexyqtx.html