语法
arr.reduce(callback,[initialValue])
//callback的四个参数:pre,cur,index,arr
//分别表示:上一次调用回调返回的值,当前被处理的元素,当前元素的索引,要处理的数组
数组求和/积
let arr = [1,2,3,4,5];
// 数组求和
let sum = arr.reduce((x,y)=>x+y);
console.log(sum); //15
// 数组求乘积
let mul = arr.reduce((x,y)=>x*y);
console.log(mul); //120
数组去重
// 数组去重
let arr = [1,1,2,3,3,4]
let array = arr.reduce((pre,cur)=>{
if(pre.includes(cur)){
return pre
}else{
return pre.concat(cur)
}
},[])
console.log(array);//[1,2,3,4]
计算元素出现次数
// 计算次数
let arr = ['A','B','C','C','A']
let arrtime = arr.reduce((pre,cur)=>{
if(cur in pre){
pre[cur]++
}else{
pre[cur] = 1
}
return pre
},{})
console.log(arrtime);//{A: 2, B: 1, C: 2}
对象内属性求和
// 对象内属性求和
let arr = [{
fruit:'apple',
price:5
},
{
fruit:'banana',
price:8
},
{
fruit:'orange',
price:9
}]
let sum = arr.reduce((pre,cur)=>{
return pre+cur.price
},0) //设置初始值防止报错 从0开始循环
console.log(sum);//22
二维数组转化为一维数组
// 二维数组转化为一维数组
let arr = [[1,2,3],[4,5]]
let newarr = arr.reduce((pre,cur)=>{
return pre.concat(cur)
},[])
console.log(newarr);//[1, 2, 3, 4, 5]