* @param function 必要参数,用于执行每个数组元素的函数
* @param initialValue 可选参数,传递给函数的初始值
array.reduce(
* @param total 必要参数,初始值或计算结束后的结果。
* @param currentValue 必要参数,当前元素
* @param currentIndex 可选参数,当前参数的下标
* @param arr 可选参数,数组对象
(total, currentValue, currentIndex, arr),
initialValue
分析:reduce()被一个非空数组调用(如果被非空数组调用返回undefined),接收两个参数,一个callback和一个设置的累加初始值,需要注意的是如果给reduce()传入了初始值,则在该值的基础是做累加操作,如果初始值不存在,则total为数组的第一项,currentValue为下一项,在第一项的基础上累加,相当于设置初始值为0,然后逐步累加。
3.常见使用方法
用reduce方法实现求数组的和
var arr=[1,2,3,4]
var total=arr.reduce((a,b)=>a+b)
console.log(total)//输出10
计算数组中元素出现的次数
let arr = ['A', 'B', 'C', 'B', 'A'];
let times = arr.reduce((pre,cur)=>{
if(cur in pre){
pre[cur]++
}else{
pre[cur] = 1
return pre
},{})
console.log(times);//输出{A:2,B:2,C:1}
将二维数组转成一维
let arr = [[0, 1], [2, 3], [4, 5]]
let newArr = arr.reduce((pre,cur)=>{
return pre.concat(cur)
},[])
console.log(newArr); // [0, 1, 2, 3, 4, 5]
//同样可以实现多维到一维
求对象中属性的总和
,
如:求班级同学总分
let info=[
name:"小明",
score:100
naem:"小红",
score:110
name:"小强",
score:120
let totalScore=info.reduce((pre,cur)=>{
return pre+cur.score
},0)
console.log(totalScore);//输出330
let arr = [1,2,3,4,4,1]
let newArr = arr.reduce((pre,cur)=>{
if(!pre.includes(cur)){
return pre.concat(cur)
}else{
return pre
},[])
console.log(newArr);// [1, 2, 3, 4]
参数求平均值
var myAverage=(...args)=>args.reduce((pre,cur)=>pre+cur)/args.length
console.log(myAverage(0,1,2,3,4))//2
以上就是本文的全部内容,希望给读者带来些许的帮助和进步,方便的话点个关注,小白的成长之路会持续更新一些工作中常见的问题和技术点。