1. 前言
不论是在实际的业务还是在面试中,博主都遇到了这样的一个需求。
将一个树形结构的数据转换成平铺的数组,或者将平铺的数组装换成树形结构,因此在这里记录一下如何实现这种转换的思想。
假设存在以下数据,其中 tree 是一个树形结构的数据,从外到内层级结构;arr 是树形结构的数组平铺,其中 pid 指在树形结构中上一层级的 id 值。
2. 正向-树形结构转平铺
const tree = [{
id: 1,
name: '北京',
children: [{
id: 11,
name: '朝阳',
children: [{ id: 111, name: '朝阳1号' }]
}, {
id: 12,
name: '海淀',
children: [{ id: 121, name: '海淀1号' }]
}]
}, {
id: 2,
name: '上海',
children: [{
id: 21,
name: '浦东',
children: [{ id: 211, name: '浦东1号' }]
},
{
id: 22,
name: '虹口',
children: [{ id: 221, name: '虹口1号' }]
}]
}];
// 正向-树形结构转平铺
// 从外到内依次递归,有 children 则继续递归
function treeToArr(data, pid = null, res = []) {
data.forEach(item &#