将数据转换为树形结构格式

发布时间 2023-03-22 21:10:47作者: Nancy*
addarrdata (data) {
      if (!Array.isArray(data)) {//验证data是不是数组类型
        return []
      }
      data.forEach(item => {
        item.parentId = item.fid
        item.label = item.typeName

      })
      return data
    },

    // 转换树形结构
    transTree (data) {
      let result = []
      let map = {}
      if (!Array.isArray(data)) {//验证data是不是数组类型
        return []
      }
      data.forEach(item => {//建立每个数组元素id和该对象的关系
        map[item.id] = item //这里可以理解为浅拷贝,共享引用
      })
      data.forEach(item => {
        let parent = map[item.parentId] //找到data中每一项item的爸爸
        if (parent) {//说明元素有爸爸,把元素放在爸爸的children下面
          (parent.children || (parent.children = [])).push(item)
        } else {//说明元素没有爸爸,是根节点,把节点push到最终结果中
          result.push(item) //item是对象的引用
        }
      })
      return result //数组里的对象和data是共享的
    },
使用:
arr = this.transTree(this.addarrdata(res.data))