el-cascader组件返回值处理成树形结构

*el-cascader 三层树结构

change事件回调值为*

```

  [

      [10000, 10001, 10067],

      [10000, 10001, 10069],

      [10000, 10003, 10071],

      [10004, 10006, 10075]

    ]

```

    每个数组第一个元素为一级id,第二个为二级id,第三个是三级id;

保存后端接口需要处理为树形结构数据

```

[

      {

        id: 10000,

        child: [

          {

            id: 10001,

            child: [ { id: 10067, child: [] }, { id: 10069, child: [] },]

          },

          {

            id: 10003,

            child: [ { id: 10071, child: [] } ]

          }

        ]

      },

      {

        id: 10004,

        child: [

          {

            id: 10006,

            child: [{ id: 10075, child: [] }]

          }

        ]

      }

    ]

```

方法记录

```javascript

let map333 = new Map()

    arr.forEach(item => {

      if (!map333.has(item[0])) {

        map333.set(item[0], new Map())

      }

      if (!map333.get(item[0]).has(item[1])) {

        map333.get(item[0]).set(item[1], new Map())

      }

      if (!map333.get(item[0]).get(item[1]).has(item[2])) {

        map333.get(item[0]).get(item[1]).set(item[2], new Map())

      }

    })

```

先用map处理一遍结构,再来个三重循环搞定

```

let paramsList = []

    for (let [key, value] of map333) {

      let obj1 = { id: key,child: [] }

      if (value.size > 0) {

        for (let [key2, value2] of value) {

          let obj2 = {id: key2, child: [] }

          if (value2.size > 0) {

            for (let [key3, value3] of value2) {

              console.log(key3, value3);

              let obj3 = {id: key3,child: []}

              obj2.child.push(obj3)

            }

          }

          obj1.child.push(obj2)

        }

        paramsList.push(obj1)

      }

    }

    console.log(paramsList, 'paramsList2');

```

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容