问题
接受了一个简单小任务,从后端获取一系列数据,以数组的形式存在,每一项都有着id
和parentId
,根据这两个属性,将这写数组重新组织成为一个树状菜单结构,传递给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
}, ];
所以在处理的时候,需要递归处理
递归
实际上,直接用递归是可以实现的,但是我也是在网找了一阵子才发现这种方法,因为一来自己的算法实在是弱,也是因为着急的时候反而脑子更加不好用
<