方法(转为一维数组)

1、把parent转为一维数组 : 

[
    {
        "ccompanyId": 503, 
        "ccompanyName": "上海张江动漫科技有限公司", 
        "parent": [
            {
                "ccompanyId": 22, 
                "ccompanyName": "上海张江文化控股有限公司", 
                "parent": [
                    {
                        "ccompanyId": 1, 
                        "ccompanyName": "上海张江(集团)有限公司"
                    }
                ]
            }
        ]
    }
]
    // 把parent转为一维数组  ok
    jsonToArray(nodes) {
      var r = [];
      if (Array.isArray(nodes)) {
        for (var i = 0, l = nodes.length; i < l; i++) {
          r.push(nodes[i]); // 取每项数据放入一个新数组
          if (
            Array.isArray(nodes[i]["parent"]) &&
            nodes[i]["parent"].length > 0
          )
            // 若存在parent则递归调用,把数据拼接到新数组中,并且删除该parent
            r = r.concat(this.jsonToArray(nodes[i]["parent"]));
          delete nodes[i]["parent"];
        }
      }
      return r;
    },

2、数组去重

      // 根据key值,数组去重开始
      for (let i = 0; i < cc.length; i++) {
        for (let j = i + 1; j < cc.length; j++) {
          if (cc[i].key == cc[j].key) {
            //第一个等同于第二个,splice方法删除第二个
            cc.splice(j, 1);
            j--;
          }
        }
      }

3、 一维数组转为树形结构

    // search数据转为树
    searchtoTree(data) {
      let result = [];
      if (!Array.isArray(data)) {
        return result;
      }
      data.forEach((item) => {
        if (!item.hasOwnProperty("children")) {
          item.children = [];
        }
      });
      let map = {};
      data.forEach((item) => {
        map[item.key] = item;
      });
      data.forEach((item) => {
        let parent = map[item.parkey];
        if (parent) {
          (parent.children || (parent.children = [])).push(item);
        } else {
          result.push(item);
        }
      });
      return result;
    },

4、递归排序 按持股比例大到小排序,相同时按注册资金排序

cardorderby(data, key, registeredCapital) {
      data.sort(this.orderby(key, registeredCapital));
      data.forEach((item, index) => {
        if (item.children.length > 0) {
          item.children.sort(
            this.cardorderby(item.children, key, registeredCapital)
          );
        }
      });
    },

5、//翻转数组

    fanzhuan(data) {
      data.reverse();
      data.forEach((item, index) => {
        if (item.children.length > 0) {
          this.fanzhuan(item.children);
        }
      });

      return data;
    },

6、往数组里面添加字段

    assetaddAttr(data) {
      // console.log(data,"222222222222")
      data.forEach((item, index) => {
        // var ff = item.assetDetail;
        // console.log(ff,"fffffffffffffffffffff")
        if (item.hasOwnProperty("asset") && item.asset.length > 0) {
          item.asset.forEach((itemasset) => {
            itemasset.asset = [];
            // itemasset.assetDetail = [...ff];
            itemasset.children = [];
            itemasset.level = item.level + 1;
            itemasset.isopen = true;
            itemasset.isshow = true;
            //添加是否有分公司 111111111111111111111111111111111111
            // itemasset.Isfengs=0;
          });
        }
        // else{
        //   item.asset=[];
        // }

        if (item.children.length > 0) {
          this.assetaddAttr(item.children);
        }
        // return item;
      });
      return data;
    },

7、把某条数据放在数组的最后面

 //把分公司放在数据的最后面
    fengongsibyorder(data) {
      data.forEach((item, index) => {
        if (item.Isfengs == 1) {
          data.unshift(data.splice(index, 1)[0]);
        }
        if (item.children.length > 0) {
          this.fengongsibyorder(item.children);
        }
      });
      return data.reverse();
    },

8、

this.$forceUpdate()

this.$set( target, key, value )

vue 强制更新数据 this.$forceUpdate() - 秋风2016 - 博客园

vue中this.$set的用法 - 简书

Vue中Vue.set()和this.$forceUpdate()的使用_styleforgive的博客-CSDN博客

Vue中Vue.set()和this.$forceUpdate()的使用_styleforgive的博客-CSDN博客

    //5减号函数
    minus(item, index) {
      let self = this;
      let ccompanyId = item.ccompanyId;

      if (item.childfengsTotal > 0) {
        let shaixunfendata = this.shaixunfendata(this.list[ccompanyId]);
        this.$set(this.list, ccompanyId, shaixunfendata);
      } else {
        this.$forceUpdate();
        this.$set(this.list, ccompanyId, []);
      }
      this.$set(this.secColumn[index], "isopen", false);
      self.$nextTick(() => {
        self.$refs["listDom" + index][0].initDom(this.list[ccompanyId]);
      });
    },

9、 this.$nextTick()

       self.$nextTick(() => {
          self.$refs["listDom" + index][0].initDom(this.list[itemCcompanyId]);
        });
//点击第二列加减号之后,往list里面添加对应的数据
    changdataById(item, index) {
      let self = this;
      let itemCcompanyId = item.ccompanyId;
      // console.log(itemCcompanyId, "22222itemCcompanyId22222222");
      // 第二列数据isopen改为true
      this.$forceUpdate();
      this.$set(this.secColumn[index], "isopen", true);
      let secColumndatas = JSON.parse(this.strsec);

      this.list[itemCcompanyId] = secColumndatas[index].children;

      self.$nextTick(() => {
        self.$refs["listDom" + index][0].initDom(this.list[itemCcompanyId]);
      });
    },

10、trim()

11、删除

 //删除没有搜索到的物业资产
    deleWuye(data) {
      // console.log(data, "deleWuye");
      data.forEach((item) => {
        let xinasset = [];
        // let xinassetDetail = [];
        item.asset.forEach((element, index) => {
          if (element.PROJECT_NAME.indexOf("style") != -1) {
            // console.log(item.asset[index], "item.asset[index]");
            xinasset.push(element);
            // xinassetDetail.push(item.assetDetail[index]);
          }
        });
        item.asset = xinasset;
        // item.assetDetail = xinassetDetail;

        if (item.parent.length > 0) {
          this.deleWuye(item.parent);
        }
      });
      // console.log(data, "1111111");
      return data;
    },

12、添加颜色

// 添加背景色
    addcolor(data) {
      data.forEach((item, index) => {
        let reginputvalue = this.reginputvalue;
        let content = item.ccompanyName;
        // 如果有小括号把里面的小括号换成xiaokhq\xiaokhh ,处理好之后在改回来
        let reg = /[\(]/g,
          reg2 = /[\)]/g;
        reginputvalue = reginputvalue
          .replace(reg, "xiaokhq")
          .replace(reg2, "xiaokhh");
        content = content.replace(reg, "xiaokhq").replace(reg2, "xiaokhh");

        if (this.keywordType == "wuyekeyword") {
          item.asset.forEach((element, index) => {
            let wuyeName = element.PROJECT_NAME;
            let elementPROJECT_NAME = wuyeName.replace(
              new RegExp(reginputvalue, "g"),
              '<span style="background-color: yellow;color:red;">$&</span>'
            );
            element.PROJECT_NAME = elementPROJECT_NAME
              .replace(/xiaokhq/g, "(")
              .replace(/xiaokhh/g, ")");
          });
        } else {
          let itemccompanyName = content.replace(
            new RegExp(reginputvalue, "g"),
            '<span style="background-color: yellow;color:red;">$&</span>'
          );

          item.ccompanyName = itemccompanyName
            .replace(/xiaokhq/g, "(")
            .replace(/xiaokhh/g, ")");

          // console.log(item.ccompanyName,"item.ccompanyName")
        }

        // if (item.children.length > 0) {
        //   this.addcolor(item.children);
        // }
      });
      // console.log(data, "1111111");
      return data;
    },

13、排序把带有颜色的放在数组的前面

 yiweidatas.forEach((item, index) => {
        if (
          item.ccompanyName.indexOf("background-color: yellow;color:red;") > -1
        ) {
          yiweidatas.unshift(item);
          yiweidatas.splice(index, 1);
        }
      });

14、递归排序 按持股比例大到小排序,相同时按注册资金排序

orderby(key, registeredCapital) {
      return function(value1, value2) {
        var val1 = value1[key];
        var val2 = value2[key];
        var reg1 = value1[registeredCapital];
        var reg2 = value2[registeredCapital];

        if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {
          val1 = Number(val1);
          val2 = Number(val2);
        }
        if (!isNaN(Number(reg1)) && !isNaN(Number(reg2))) {
          reg1 = Number(reg1);
          reg2 = Number(reg2);
        }
        if (val1 == val2) {
          if (reg1 > reg2) {
            return -1;
          } else if (reg1 < reg2) {
            return 1;
          } else {
            return 0;
          }
        } else if (val1 > val2) {
          return -1;
        } else {
          return 1;
        }
      };
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值