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