在工作中会经常有计算数量总和的功能,在以前实现这个功能的时候,会遍历数组里面的数量,一遍一遍的循环计算,例如,想要快速计算数组 [1,2,3,4,5]
,以前会这样写:
var numArray = [1,2,3,4,5];
var sum = 0;
for (var i = 0; i < numArray.length; i++){
sum += numArray[i]
}
console.log(sum); //15
但是现在,只需要用一行代码就能实现这个功能,这个功能我们需要用到这个方法 redyce()
,兼容性还不差,能兼容到 IE9
满足到大部分的工作场景,但是如果需要更低的浏览器兼容,就只能使用上面的那种老方法了。
let numArray = [1,2,3,4,5];
numArray.reduce((accumulator, currentValue) => Number(accumulator) + Number(currentValue)); //15
但是如果当浏览器不兼容箭头函数,那我们可以使用下面的这种方法?
let numArray = [1,2,3,4,5];
numArray.reduce(function (accumulator, currentValue) {
return accumulator + currentValue;
}, 0); //15
这里的这个方法最后的 0
意思是第一次调用函数时的第一个参数值也就是初始值,如果没有提供该值,则会直接使用数组用的第一个元素,在一个没有初始值的空数组上调用 reduce
,则会直接报错,例如?。
[].reduce(function (accumulator, currentValue) {
return accumulator + currentValue;
});
//Uncaught TypeError: Reduce of empty array with no initial value
更多详细信息可以查看这里:reduce()
有问题欢迎留言一起交流,路还很长,未完待续…