基本语法
arr.reduce((prevVal,curVal,index,arr)=>{
...
},init)
- prevVal:必须,初始值或上一次返回结果
- curVal:必须,当前元素
- index:可选,当前元素索引
- arr:可选,原数组
- init:可选,初始值
应用
const arr = [1,2,3,4,5];
const res = arr.reduce((prevVal,curVal,index,arr)=>{
return prevVal + curVal;
});
const arr = [1,2,3,4,5];
const res = arr.reduce((prevVal,curVal,index,arr)=>{
return prevVal + curVal;
},2);
const arr = [1,2,3,4,5];
const res = arr.reduce((prevVal,curVal,index,arr)=>{
return prevVal * curVal;
});
const arr = [1,2,3,4,5,2,2,2,5,1];
const res = arr.reduce((prevVal,curVal,index,arr)=>{
if(curVal in prevVal){
prevVal[curVal]++;
}else{
prevVal[curVal]=1;
}
return prevVal;
},{});
const arr = [1,2,3,4,5,2,2,2,5,1];
const res = arr.sort().reduce((prevVal,curVal,index,arr)=>{
if(prevVal.length===0||prevVal[prevVal.length-1]!==curVal){
prevVal.push(curVal)
}
return prevVal;
},[]);
const arr = [1,2,3,4,5,2,2,2,5,1];
const res = arr.reduce((prevVal,curVal,index,arr)=>{
if(prevVal.indexOf(curVal)===-1){
prevVal.push(curVal);
}
return prevVal;
},[]);
const arr = [{ name: '张三', age: 17 }, { name: '李四', age: 18 }]
const res = arr.reduce((prevVal, curVal, index, arr) => {
return prevVal + curVal.age;
},0);