vue中将一维数组数据转换为树形结构数据

    getTreeData(id) {
      var self = this;
      data = [{
          id: "3",
          name: "二级目录0",
          lv: "1",
          catalogs: [],
          fid: "0"
      },{
          id: "8",
          name: "二级目录1",
          lv: "2",
          catalogs: [],
          fid: "3"
      }];
        data = self.arrayToJson(data)
        console.log(self.arrayToJson(data))
    },
    arrayToJson(treeArray) {
      var r = [];
      var tmpMap = {};
      for (var i = 0, l = treeArray.length; i < l; i++) {
        // 以每条数据的id作为obj的key值,数据作为value值存入到一个临时对象里面
        tmpMap[treeArray[i]["id"]] = treeArray[i];
      }
      console.log("tmpMap", tmpMap);
      for (i = 0, l = treeArray.length; i < l; i++) {
        var key = tmpMap[treeArray[i]["fid"]];
        console.log("key", key);
        //循环每一条数据的 fid,假如这个临时对象有这个key值,就代表这个key对应的数据有children,需要Push进去
        //如果这一项数据属于哪个数据的子级
        if (key) {
          // 如果这个数据没有children
          if (!key["children"]) {
            key["children"] = [];
            key["children"].push(treeArray[i]);
            // 如果这个数据有children
          } else {
            key["children"].push(treeArray[i]);
          }
        } else {
          //如果没有这个Key值,就代表找不到属于哪个数据,那就代表没有父级,直接放在最外层
          r.push(treeArray[i]);
        }
      }
      console.log(r)
      return r;
    },

打印结果:

vue中将一维数组数据转换为树形结构数据_第1张图片

你可能感兴趣的:(❤️❤️--vue2,一维数据转换为树形数据)