树形结构递归_【算法解析】js 树形数据 转 扁平数据

本文介绍了在项目开发中如何将树形数据结构转换为扁平数据结构,提供了递归方法的思路和示例代码。通过循环数组、判断children属性并递归处理,最后将处理后的对象加入新数组。感兴趣的读者可以期待作者关于扁平数据转树形结构的下一篇文章。
摘要由CSDN通过智能技术生成
8b2801b32aeb4b0cf742513cbbde0d07.png bug收集:专门解决与收集bug的网站 网址:www.bugshouji.com 在项目开发过程中,都会遇到树形数据结构与扁平数据结构的转换。 下面分享一下,树形数据结构扁平数据结构的方法 01 数据结构 树形数据结构
[{id:1, pid:0, name:'沃尔玛', childrens:[      {id:2, pid:1, name:'生鲜区', childrens:[        {id:4, pid:2, name:'鱼'},        {id:5, pid:2, name:'牛肉'}      ]},      {id:3, pid:1, name:'日用品区',childrens:[          {id:6, pid:3, name:'卫生纸'},          {id:7, pid:3, name:'牙刷'}        ]}    ]}
扁平数据结构
[{id:1, pid:0, name:'沃尔玛'}, {id:2, pid:1, name:'生鲜区'}, {id:3, pid:1, name:'日用品区'}, {id:4, pid:2, name:'鱼'}, {id:5, pid:2, name:'牛肉'}, {id:6, pid:3, name:'卫生纸'}, {id:7, pid:3, name:'牙刷'}, {id:8, pid:7, name:'电动牙刷'}, {id:9, pid:7, name:'普通牙刷'}]
02 树形转扁平 思路 ( 递归方法 ): 1、循环数组,取出每个对象进行判断 2、如果有children属性,将children传到flat函数重复执行,并将执行的结构返回数组,加入到新数组中。然后删除当前对象的childrens属性 3、不管是否有childrens属性,都要将当前对象解构,然后加入新数组中 代码如下:
function flat(arr){  var newArr=[];//申请新数组  for(var i=0;i
03 示例代码 写了一个DEMO 代码如下:
var  data=[{id:1, pid:0, name:'沃尔玛', childrens:[        {id:2, pid:1, name:'生鲜区', childrens:[            {id:4, pid:2, name:'鱼'},            {id:5, pid:2, name:'牛肉'}        ]},        {id:3, pid:1, name:'日用品区',childrens:[            {id:6, pid:3, name:'卫生纸'},            {id:7, pid:3, name:'牙刷'}        ]}    ]}];   var flatArr= flat(data);   //递归    function flat(arr){        let newArr=[];        for(let i=0;i            if(arr[i].childrens){//childrens存在                newArr.push(...flat(arr[i].childrens));                delete arr[i].childrens;            }            newArr.push({...arr[i]});        }        return newArr;    }
本文分享到这, 关于扁平结构转树形结构,请期待下一篇公众号文章 如果喜欢这篇文章,可以支持一下哟,分享、点赞、在看 走一个,哈哈@_@ 04d3e53c7b99234ad23474a5d7f9c11a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值