首页 > 其他分享 >用递归函数实现树形结构转化为列表数据

用递归函数实现树形结构转化为列表数据

时间:2022-12-08 13:34:35浏览次数:44  
标签:code name 递归函数 市辖区 list 列表 item 树形 children

题目:  将下面的树结构的数据转化为列表的数据。 [ { "name": "北京市", "code": "11", "children": [ { "name": "市辖区", "code": "1101", "children": [ { "name": "东城区", "code": "110101", "children": [] } ] } ] }, { "name": "天津市", "code": "12", "children": [ { "name": "市辖区", "code": "1201", "children": [ { "name": "河北区", "code": "120105", "children": [] } ] } ] }, ]

转化格式:

[ { "name": "北京市", "code": "11", }, { "name": "市辖区", "code": "1101", }, { "name": "东城区", "code": "110101", }, { "name": "天津市", "code": "12", }, { "name": "市辖区", "code": "1201", }, { "name": "河北区", "code": "120105", } ]

测试数据: 

var testData =  [ { "name": "北京市", "code": "11", "children": [ { "name": "市辖区", "code": "1101", "children": [ { "name": "东城区", "code": "110101", "children": [] } ] } ] }, { "name": "天津市", "code": "12", "children": [ { "name": "市辖区", "code": "1201", "children": [ { "name": "河北区", "code": "120105", "children": [] } ] } ] }, ]

方法:

getListData = (data) => {
let list = [];
data.map((item) => {
// 判断当前item中是否有children
if (item.children) {
// push添加到list ...扩展运算符用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中
// getListData函数,利用了递归,因为我们不知道有多少个children,判断当前数组中对象是否里面有children,有的话继续迭代,直到有没children了,return会返回数组,再用扩展运算符连接起来,再用push添加
list.push(...getListData(item.children));
// delete 排除item.children
delete item.children;
}
list.push(item);
})
return list;
}
getListData(testData)



标签:code,name,递归函数,市辖区,list,列表,item,树形,children
From: https://www.cnblogs.com/judyhuayu/p/16965828.html

相关文章

  • IDEA 2022.3 中查看类中所有方法列表,属性排序
    IntelliJIDEA2022.3(CommunityEdition)Build#IC-223.7571.182,builtonNovember29,2022Runtimeversion:17.0.5+1-b653.14amd64VM:OpenJDK64-BitServerVM......
  • 六、Accordion——手风琴方格(我叫它,可折叠面板列表)
     Accordion是一个可折叠的面板列表,每个面板都由header和content两个部分组成,header部分是始终显示的,当点击header后则会展开或折叠起其对应的content部分,但每次对多只能打......
  • GRBL错误代码列表 grbl error list
    'error:1':_('G-codewordsconsistofaletterandavalue.Letterwasnotfound.'),'error:2':_('Numericvalueformatisnotvalidormissinganexpectedva......
  • 5.python-列表字典混合练习
    疫情管理"""疫情信息管理系统显示菜单选择菜单1键录入疫情信息(地区、新增、现有)2键显示疫情信息3键删除疫情信息......
  • vue+element列表排序
    1.默认排序很简单在el-table标签中加入默认属性:default-sort="{prop:'date',order:'descending'}"然后在单独一列中<el-table-columnprop="date"l......
  • 11-管理员列表
    1.数据库新建库-app[models.py]fromdjango.dbimportmodelsclassAdmin(models.Model):"""管理员表"""username=models.CharField(verbose_name="用户......
  • 前端学习之------树形列表转list
    1、树形数据为:2、方法letresult=[]//结果数组lettreeToList=(treeArr)=>{treeArr.forEach(treeitem=>{result.push({id:treeitem.i......
  • 直播app系统源码,使用scroll-view实现内容列表的竖向滚动
    直播app系统源码,使用scroll-view实现内容列表的竖向滚动app.json{ "pages":[  "pages/index/index" ], "window":{  "navigationBarBackgroundColor":"......
  • 疫情期间刷题列表
    图的连通性P3388【模板】割点(割顶)[道路建设POJ3352](缩点模版)P3387【模板】缩点KMP【模板】KMP字符串匹配剪花布条HDU-2087优先队列P1168中位数链式前向星P......
  • hdu4705 Y--树形dp
    原题链接:​​http://acm.hdu.edu.cn/showproblem.php?pid=4705​​题意:一棵树,求三个点不在一条线的个数。分析:注意,反过来求,求出三个点在一条线的个数,最后总数减去在一条线的......