reduce传入一个参数
[1,2,3,4].reduce(function(a,b){
rerurn a+b;
}) //相当于函数执行3遍,求和,每次返回上一次的值
- a:1 b:2
- a:3 b:3
- a:6 b:4
reduce传入两个参数
[1,2,3,4].reduce(function(a,b){
return a+b;
},5) //相当于函数把第二个参数加到数组前面变为[5,1,2,3,4],函数执行4遍,求和
- a:5 b:1
- a:6 b:2
- a:8 b:3
- a:11 b:4
举个最近在学校培训老师说的例子吧,瞬间感觉reduce还蛮有用
function mergeBarcodes(barcodes){
let result = [];
result = barcodes.reduce(function(cur,newVal){ //reduce参数:前一个值和当前值
let exit = cur.find(function(item){
return item.barcode === newVal.barcode;
});
if(exit){
exit.amount += newVal.amount
}else{
cur.push(Object.assign({},newVal));
}
return cur; //相当于reduce的前一个值
},[]);
return result;
}