对象数组重组(省市区/菜单目录)

139 阅读1分钟
    getArea() {
      queryArea(storage.get(ACCESS_TOKEN)).then((res) => {
        var data = res.Result
        var areaList = new Array()
        let map = {}
        data.sort((a, b) => a.pId - b.pId)
        data.forEach((resource) => {
          resource.children = []
          map[resource.id] = resource
          if (resource.pId == 0) {
            areaList.push(resource)
          } else {
            if (map[resource.pId]) {
              map[resource.pId].children.push(resource)
            } else {
              throw new Error(`当前循环的数据pId=${resource.pId}有错误`)
            }
          }
        })
        this.areaList = this.deleteChildren(areaList)
      })
    },
    //删除最深层空children
    deleteChildren(arr) {
      let childs = arr
      for (let i = childs.length; i--; i > 0) {
        if (childs[i].children) {
          if (childs[i].children.length) {
            this.deleteChildren(childs[i].children)
          } else {
            delete childs[i].children
          }
        }
      }
      return arr
    },