数组递归转tree
当后端传来的数据是扁平化的时候,前端可用代码处理数据得到树形结构
列表型数据的关键属性: id 和 pid, id 指的是自己的部门 id, pid 指的是父级部门的 id (空则没有父级部门) 孩子的 pid 与父亲的 id 一致
// 注 : list 传来的数组 , value 筛选的条件
function arrToTree(list, value) {
// 1.定义一个空数组,后续往里面添加树形结构
const arr = [];
list.forEach((item) => {
// 2. 筛选满足要求的item
if (item.pid === value) {
// 3.筛选所有孩子,即pid与父级id一致的(外循环走一次,里面走完所有)
const children = arrToTree(list, item.id);
// 4.父级中有孩子,才能加上children属性
if (children.length > 0) {
// 5. 因为需要的树形结构中孩子属性名为children,手动给父级添加一个children属性,并赋值
item.children = children;
}
// 6. 把满足要求的一组数据push进去
arr.push(item);
}
});
// 返回树形结构
return arr;
}
// 第一次调用函数,找出pid为''的每一项(即父级),后面调用,找孩子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
上次更新: 2024/08/07, 18:05:11