js 计算数组中指定字段的和

js yekong

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')
喜欢