# 数组递归对象转换为tree树形结构
//要转换的数据源
//注意:数据源中必须有id与parentId字段
//*树形tree需要注意Id与parentId循环依赖的问题 */
let source = [
{ name: 'tree1', id: 1, parentId: 0 },
{ name: 'tree2', id: 2, parentId: 0 },
{ name: 'tree3', id: 3, parentId: 1 },
{ name: 'tree4', id: 4, parentId: 1 },
{ name: 'tree5', id: 5, parentId: 7 },
{ name: 'tree6', id: 6, parentId: 7, hidden: true },
{ name: 'tree8', id: 8, parentId: 3 },
]
//使用 this.base.convertTree方法进行转换,
//1、第一个参数为没有转换过的数据源
//2、第二个参数callback:每次生成一新的节点的时回调的方法
let result = this.base.convertTree(source, (node, data, isRoot) => {
//设定其他字段属性
//node当前遍历的节点:{ name: 'tree1', id: 1, parentId: 0 }
//data整个数据源
//isRoot是否为根节点,一级节点
//添加一些别的属性
node.value = node.name;
node.label = node.name;
node.text = node.name;
});
console.log(JSON.stringify(result))
//转换后的格式
// [{
// "name": "tree1", "id": 1, "parentId": 0, "isRoot": true,
// "lable": "tree1", "text": "tree1",
// "children": [
// {
// "name": "tree3", "id": 3, "parentId": 1, "lable": "tree3",
// "children": [
// { "name": "tree8", "id": 8, "parentId": 3, "lable": "tree8" }
// ]
// },
// {
// "name": "tree4", "id": 4, "parentId": 1, "lable": "tree4", "text": "tree4"
// }
// ]
// }]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44