js对数组求和的方法有很多,我们先整理一下求和的方法
for循环方法
通过for循环进行求和
let arr = [1,2,3,4,5,1];
function getSum(arr){
let sum = 0;
for(var i = 0;i<arr.length;i++){
sum += arr[i];
}
return sum ;
}
forEach方法求和
通过forEach循环进行计算求和
var arr = [1,2,3,4,5,1];
function getSum(arr){
let sum = 0;
arr.forEach(function(item){
sum += item ;
});
return sum ;
}
some方法求和
通过some方法进行求和
let arr = [1, 2, 3, 4, 5, 1];
function getSum(arr) {
let sum = 0;
arr.some(function (item) {
sum += item;
return false;
});
return sum;
}
map方法求和
通过map方法进行求和
let arr = [1, 2, 3, 4, 5, 1];
function getSum(arr) {
let sum = 0;
arr.map(function (item) {
sum += item;
});
return sum;
}
filter方法求和
let arr = [1, 2, 3, 4, 5, 1];
function getSum(arr) {
let sum = 0;
arr.filter(function (item) {
sum += item;
});
return sum;
}
等等,有很多种方法可以实现我们想要的求和,不过上面的方法中数组中的元素都是数字才可以,如果数组中的元素都是对象就需要先进行数据处理,将数据转为纯数字数组才可以。比如下面的数据格式:
[{
name: '测试1',
num: 200,
}, {
name: '测试2',
num: 10,
}, {
name: '测试3',
num: 40,
}, {
name: '测试4',
num: 50,
}, {
name: '测试5',
num: 100,
}, {
name: '测试6',
num: 10,
}, {
name: '测试7',
num: 80,
}, {
name: '测试8',
num: 90,
}]
封装求和方法
我们对数据进行封装,通过传数据以及需要获取数值的字段名就可以了。
getTotalByKey(list, key) {
var total = 0;
list.forEach((type) => {
total = total + type[key]
});
return total
},
total = this.getTotalByKey(this.list, 'num')