如果在一个数组想对数组中的所有项进行求和(当然每项都得是Number对象)该怎么做呢?
可以使用Array
对象的reduce
或reduceRight
方法。这两个方法会遍历数组中的每个对象,并最终返回一个值。
这两个方法都接受两个参数:
- 在每一项上调用的函数,这个函数包含4个参数
- total:初始值,或者是每一次函数调用完之后的返回值
- currentValue:当前值,当前所遍历到的值
- currentIndex:当前索引,当前所遍历到的值的索引
- arr:当前所遍历的数组对象
- 作为归并基础的初始值
形式如下:
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
来看一个例子,
let arr = [1,2,3,4,5,6,7,8,9,10]
let result = arr.reduce((total, currentValue, currentIndex, arr)=>{
return total + currentValue;
});
console.log(result); //55
需要注意的是,参数total
的初始值是数组的第一个值,reduce
方法对数组的遍历是从第二项开始的,而每次的返回都会把计算出来的结果传给下一个total
。