# 数组递归对象转换为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