算法练习05 生成树形结构的方法

本文介绍了如何从无序的数组数据构建树形结构,面对可能的子项先于父项出现的情况,提出了递归和利用JavaScript引用类型的两种解决方案。通过预先对数据分组建立索引,然后遍历原始数据,为每个元素添加指向其子项的属性,最终形成树状菜单结构。文中还讨论了处理过程中需要注意的性能和引用类型问题,并提供了参考资源。
摘要由CSDN通过智能技术生成

已同步到个人博客,欢迎访问

问题

接受了一个简单小任务,从后端获取一系列数据,以数组的形式存在,每一项都有着idparentId,根据这两个属性,将这写数组重新组织成为一个树状菜单结构,传递给UI组件

这个问题有一点难度的事,后端传递的数据不是组织好的,是没有顺序的,就是说,有可能子项先出现,而父项后出现

let originId = [ 
  id: 2,
  name: 'b',
  parentId: 0
}, {
  id: 4,
  name: 'a-2',
  parent_id: 1
}, {
  id: 5,
  name: 'b-1',
  parentId: 2
}, {
  id: 6,
  name: 'b-2',
  parentId: 2
}, {
  id: 3,
  name: 'a-1',
  parentId: 1
}, {
  id: 1,
  name: 'a',
  parentId: 0
}, {
  id: 7,
  name: 'a-1-1',
  parentId: 3
}, ];

所以在处理的时候,需要递归处理

递归

实际上,直接用递归是可以实现的,但是我也是在网找了一阵子才发现这种方法,因为一来自己的算法实在是弱,也是因为着急的时候反而脑子更加不好用

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值