先新建一个数组

 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. C/S架构和B/S架构介绍
  2. python 归一化 标准化
  3. keil5函数 默认返回值_C++的返回值return
  4. java 判断日期是同一天_如何检查Java中的两个日期是否在同一天
  5. Asp.net 2.0 发送邮件
  6. 【ARTS】01_04_左耳听风-20181203~1209
  7. 女生适合学ux吗_UX设计色彩心理学,理论与可访问性
  8. Linux命令之tree
  9. 如何在计算机上阅读漫画书
  10. 朴素贝叶斯算法+模型的评价-查准率、召回率、F1-score及混淆矩阵(code实现)
  11. C++11智能指针处理Array对象
  12. 大工20春计算机文化基础在线测试1,大工20春《计算机文化基础》在线测试1学习答题资料...
  13. 手机直播帧数测试软件,斗鱼直播伴侣帧数如何查看?帧数查看方法图文介绍
  14. Nightwish全部专辑320kbs全集下载
  15. Tomcat后台管理
  16. 如何在scrapy框架里进行调试嘞
  17. 来看一场开发者大会,缘何引来千人盛况
  18. Lvm linux磁盘分区管理(多个分区合并成一个)
  19. 2022LOL微博杯模糊问题,1080p高清看微博杯the shy比赛直播
  20. 透透彻彻IoC(你没有理由不懂!)

热门文章

  1. 安装pdf打印机无法找到安装打印机的核心驱动
  2. html实现价格随数量变化,一种商品价格智能分段递减定价方法与流程
  3. Lumerical---在FDTD和MODE工程中的PML边界条件
  4. 鬼哥解说多元链mut背景
  5. 微服务项目中如何管理依赖版本号?
  6. 如何实现映客那种连麦直播
  7. python将汉字转化为拼音
  8. 常见的BI软件有哪些?
  9. 共源共栅结构可以提高PSRR吗
  10. MacBook Pro 2019 13寸 体验