首页 > 其他分享 >#yyds干货盘点#将一维数据转化成tree

#yyds干货盘点#将一维数据转化成tree

时间:2023-03-30 15:10:37浏览次数:36  
标签:yyds arr const map tree children 干货 parentId id

将一维数组,转化成嵌套的tree

const arr = [
    { id: 1, title: "child1", parentId: 0 },
    { id: 2, title: "child2", parentId: 0 },
    { id: 3, title: "child1_1", parentId: 1 },
    { id: 4, title: "child1_2", parentId: 1 },
    { id: 5, title: "child2_1", parentId: 2 }
  ]

const buildChildrenArr = (arr) => {
    const res = [];
    const map = {};
    for ( let i = 0; i < arr.length; i++) {
      map[arr[i].id] = { ...arr[i], children: []};
      const key = arr[i].id;
      if (!map[key].parentId) {
        res.push(map[key])
      } else {
        const parentId = map[key].parentId
        if (parentId === map[parentId].id) {
          map[parentId].children.push(map[key])
        }
      }
    }
    return res;
  };

  console.log('buildChildrenArr', buildChildrenArr(arr));

也可以用递归的方式写

function buildTree(arr, parentId) {
    const result = [];
    for (let i = 0; i < arr.length; i++) {
      const item = arr[i];
      if (item.parentId === parentId) {
        const children = buildTree(arr, item.id);
        if (children.length > 0) {
          item.children = children;
        }
        result.push(item);
      }
    }
    return result;
  }
  
  
  const tree = buildTree(arr, 0);

标签:yyds,arr,const,map,tree,children,干货,parentId,id
From: https://blog.51cto.com/u_11365839/6159559

相关文章

  • 易基因: m6A RNA甲基化研究的前期探索性实验思路|干货系列
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。近年来,m6ARNA甲基化作为国家自然科学基金表观遗传学研究的热门领域,相关研究成果层出不穷,高分文章不断......
  • #yyds干货盘点#怎么找到上锁的 SQL 语句
    有的时候SQL语句被锁住了,可是通过showprocesslist找不到加锁的的SQL语句,这个时候应该怎么排查呢前提performance_schema=on;实验1、建一个表,插入三条数据mysql>us......
  • #yyds干货盘点#基于Nuxt实现Token过期自动刷新
    项目使用前后的分离的开发模式,后端使用SpringSecurity实现基于Jwt的用户认证模式,数据交互使用Json格式。前端使用Nuxt框架实现服务端渲染(SSR)功能,使用Vuex实现登录状态存储,......
  • LSMT(Log-Structured Merge-Tree)
    LSM简介LogStructuredMergeTree,下面简称LSM。2006年,Google发表了 BigTable 的论文。这篇论文提到BigTable单机上所使用的数据结构就是LSM。目前,LSM被很多存储产......
  • jquery之ztree树入门(输出最简单树形)
      <scripttype="text/javascript"src="js/jquery-1.4.4.min.js"></script><scripttype="text/javascript"src="js/jquery.ztree.core-3.5.js"></script><scrip......
  • 为什么场景图叫图(Graph)而不是叫树(Tree)?
    就如它的名字所说的一样,场景图是一个用于组织图形图像数据结构在计算机中显示的应用程序。一个通常的想法是场景往往被分为很多的部分,而出于某种通常的目的,这些部分最终都......
  • Gym104076L Tree Distance
    Gym104076LTreeDistance题目链接。\(\text{difficulty}={4,2.5}\)。\(\text{tags}=点分治,扫描线\)。没见过确实想不到。由于查询是区间对区间,分块等数据结构并不好......
  • TreeMap特性
    TreeMap可以实现的数据结构具有平衡搜索二叉树的设计:AVL,SB树,红黑树常规外设计:跳表时间复杂度都是:Log(N)区别只有常数级别的TreeMap<Integer,String>treeMap......
  • #yyds干货盘点# LeetCode程序员面试金典:盛最多水的容器
    题目:给定一个长度为n的整数数组 height 。有 n 条垂线,第i条线的两个端点是 (i,0) 和 (i,height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以......
  • #yyds干货盘点# LeetCode面试题:不同路径
    1.简述:一个机器人位于一个mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Fin......