先新建一个数组

 const arr = [{pid: null,id: 1,name: '北京'},{pid: 1,id: 11,name: '朝阳'},{pid: 11,id: 111,name: '朝阳1号'},{pid: 1,id: 12,name: '海淀'},{pid: 12,id: 121,name: '海淀1号'},{pid: null,id: 2,name: '上海'},{pid: 2,id: 21,name: '浦东'},{pid: 21,id: 211,name: '浦东1号'},{pid: 2,id: 22,name: '虹口'},{pid: 22,id: 221,name: '虹口1号'}]

树形结构转平铺结构

function treeToArr(arr, pid = null, res = []) {arr.forEach(item => {res.push({pid: pid,id: item.id,name: item.name});if (item.children && item.children.length !== 0) {treeToArr(item.children, item.id, res);}});return res;};const aaaa = treeToArr(arr);console.log(aaaa);

平铺结构转树形结构

function arrToTree(arr, pid = null) {const res = [];arr.forEach(item => {if (item.pid === pid) {// 这样每次都需要遍历整个数组,因此时间复杂度为 n*n// const children = arrToTree(arr, item.id)   // 往下递归时,每次数组的大小都在减小,每次都筛选掉父代元素,最终的时间复杂度为 n*lognconst children = arrToTree(arr.filter(v => v.pid !== pid), item.id);if (children.length) {res.push({...item,children})} else {res.push({...item})}}});return res;};const tree = arrToTree(arr);console.log(JSON.stringify(tree, null, 2));

树形结构转平铺结构,平铺结构转树形结构相关推荐

  1. 结构体怎么赋值_Go 经典入门系列 16:结构体

    点击上方蓝色"Go语言中文网"关注,每天一起学 Go 欢迎来到 Golang 系列教程的第 16 个教程. 什么是结构体? 结构体是用户定义的类型,表示若干个字段(Field)的集 ...

  2. NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构...

    本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...

  3. golang判断结构体为空_如何在Golang中检查结构是否为空?

    golang判断结构体为空 The size of an empty structure is zero in Golang. Here, empty structure means, there i ...

  4. [vue] 说下你的vue项目的目录结构,如果是大型项目你该怎么划分结构和划分组件呢?

    [vue] 说下你的vue项目的目录结构,如果是大型项目你该怎么划分结构和划分组件呢? views目录存放一级路由的组件,即视图组件 Components目录存放组件 Store存放vuex相关文件 ...

  5. 遍历结构体_三菱ST语言编程(3)——结构体变量

    上篇文章介绍了数组,是一组相同类型数据的列表,那么不同类型的数据能否组合到一起用一个标签表示呢?答案当然是可以的,而实现这个功能的就是结构体(struct). 建立结构体 在三菱结构化编程的界面中左侧 ...

  6. c 定义结构体时提示应输入声明_C++|了解结构体的内存对齐(成员声明的顺序影响占用空间大小)...

    我们使用的电子计算机绝大部分都是冯·诺依曼结构的机器,遵循"存储程序"的概念.数据处理以存储为前提,在编程中数据如何"存得进去,取得出来",并且符合空间.时间效 ...

  7. python分支结构基础实训_零基础Python教程-分支结构

    文章目录 下面就让我们先一起学习单分支结构: 单分支结构 双分支结构 多分支结构 在日常生活中,我们会遇到很多选择类的问题.比如:午饭吃螺蛳粉还是生煎包?下班回家坐地铁还是公交车?这也就是我们编程语言 ...

  8. c语言中结构体头文件是什么,函数形参里有结构体指针,为什么在头文件生

    满意答案 lam950 2017.04.08 采纳率:59%    等级:8 已帮助:913人 C语言用结构体指针作函数参数 这种方式比用结构体变量作函数参数效率高,因为无需传递各个成员的值,只需传递 ...

  9. java第五章循环结构总结_Java理论学习三分钟-流程控制之循环结构(3)

    一.循环结构概念引入 在生活中会出现这样的编写程序,计算1+2+3+--+100的值 int a1=1; int a2=2; int a3=3; -- int a100=100; a100=a1+a2 ...

  10. 试述3种基本结构的特点,请另外设计两种基本结构

    试述3种基本结构的特点,请另外设计两种基本结构(要符合基类结构的特点) 点我看视频讲解+可运行代码 记得收藏视频,一键三连 结构化程序设计方法主要由以下三种基本结构组成: 顺序结构:顺序结构是一种线性 ...

最新文章

  1. STL map 简介
  2. css案例学习之全局声明*{} 与body{}的区别
  3. ​Nature子刊 | 睡眠时型会影响人类大脑生理的认知功能
  4. python创建csv文件并写入-Python 读写 CSV
  5. 【机器学习算法专题(蓄力计划)】十二、机器学习中KNN算法
  6. 2018/8/31周报
  7. Spring Cloud Eureka(四):Eureka 配置参数说明
  8. 用Docker部署TensorFlow Serving服务
  9. 字符串转小写 c语言库函数,c++字符串大小写转换
  10. 挪威议会的内部邮件系统遭攻击,信息被盗
  11. 【Linux】面试常问的 25+ 个 Linux 命令
  12. SAS 9.4 破解时间限制
  13. 有赞团队:SaaS公司的系统稳定与安全机制,附Saas研报
  14. “终端服务临时客户端许可证过期”的解决方法
  15. 【OpenCV】 车牌识别检测
  16. Android 9.0 10.0 Launcher3 时钟动态图标的定制化(时钟动态图标)
  17. IDEA单击打开文件
  18. 搭建Cobbler无人值守安装服务器
  19. Mac保留文件重装系统
  20. Unity VR开发教程 OpenXR+XR Interaction Toolkit (六)手与物品交互(触摸、抓取)

热门文章

  1. 将中国标准时间转化为 yy-mm-dd hh:mm:ss格式
  2. mysql 死掉怎么办
  3. 128X64OLED的使用以及相关LCD取模软件相关操作
  4. JAVA毕设项目农产品交易系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  5. 操作记录-2020-12-21: dongfeng_GAS_project
  6. PR和AE打不开的进来看看
  7. 【AI视野·今日Sound 声学论文速览 第五期】Fri, 22 Apr 2022
  8. tiny4412用 usb 连接计算机显示sec s5pc210 test b/d 解决方法
  9. 如何使移动端项目在PC端依然可以良好的展示
  10. 重要!考研入场的5个流程细节!