前言
reduce方法为归并类方法。在数组的每个元素上执行用户提供的回调函数。它传入对前一个元素进行计算的返回值。结果是单个值。它是在数组的所有元素上运行回调函数的结果。
reduce方法使用的场景特别多,循环遍历能做的,reduce都可以做,比如数组求和、数组求积。、从数组中获取对象、数组中元素出现的次数、数组去重等等。
语法
arr.reduce(function(prev,cur,index,arr){
...
}, init);
参数:
prev 必需。累计器累计回调的返回值; 表示上一次调用回调时的返回值,或者初始值 init;
cur 必需。表示当前正在处理的数组元素;
index 可选。表示当前正在处理的数组元素的索引,若提供 init 值,则起始索引为- 0,否则起始索引为1;
arr 可选。表示原数组;
init 可选。表示初始值。
举例
1、没有设置函数的初始值init
const arr = [1,2,3,4,5];
const sum = arr.reduce(function(prev,cur,index,arr){
console.log(prev,cur,index);
return prev + cur;
});
console.log('arr:',arr,'sum:',sum);
运行结果:
上面的这段代码,是用来计算数组总和的,迭代了4次。reduce()方法中,没有传入初始值参数init,所以,函数迭代的初始值是1,也就是默认值(数组的第一项参数prev的值),而cur的值为数组的第二项,第一次迭代会返回return 1+2,第二次迭代方法中prev的值,是第一次迭代方法返回的结果,也就是说prev的值是每次计算后的值。