【笔记】js数组相关方法,持续更新(reduce、includes、every、map等)

1、reduce
reduce–求数组的和,阶乘,乘积(从左往右),prev表示前两个值的和(没有定义初始值时为第一个值),next为后一个值

    fundChange(val) {
    
    
      if (val.length > 0){
    
    
        let fundlVal = val.map(item => item.TotalPrice)
        let sumfundVal = fundlVal.reduce(function (prev, next) {
    
    
          return Number(prev) + Number(next);
        })
        this.$set(this.formData,'fundTotal',sumfundVal)
      }else {
    
    
        this.$set(this.formData,'fundTotal',0)
      }
    },

2.includes
includes–判断数组中是否包含一个指定的值

  isEdit() {
    
    
        let flag = Object.keys(this.modelDict).includes(`${
     
     this.modelString}`);
        return flag;
      }
this.iconList = this.iconList.filter(item => item.includes(this.name))

3、every
every–找到符合条件的值会继续执行,如果每个值都满足条件才会返回true,否则就是false。

示例解读:every返回布尔值,filter过滤布尔值为true的项,用在弹窗列表,每次打开弹窗勾选项,再次打开弹窗勾选过的项会被过滤到,保留未被勾选过的项。

 this.Carr = this.Aarr.filter((item) =>
      this.Barr.every((v) => item.Code !== v.Code)
    );

改用includes也可以

  this.Carr  = this.Aarr.filter(
        (item) => !this.Barr.includes(item)
      );

    this.Carr  = this.filterArr(this.Aarr, this.Barr);
     filterArr(a, b) {
    
    
      return a.filter((e) => !b.includes(e));
    },

4、map映射
当我们要从一个数组里,从每项里拿指定的字段出来,重新放到一个新的数组里
常规写法如下,这样写,执行效率低

       let Arr = [];
        this.gentList.forEach((item) => {
    
    
          let Obj = {
    
    
            cityName: item.CityName,
            standValue: item.expExtend,
          };
          Arr.push(Obj);
        });

用map映射,这样写,写法简单执行效率高

  let Arr=  this.gentList.map((item) => {
    
    
        return {
    
    
            cityName: item.CityName,
            standValue: item.expExtend,
          };       
        });

如果只要一项,不需要return

猜你喜欢

转载自blog.csdn.net/weixin_49668076/article/details/128074960
今日推荐