js数组reduce()⽅法的使⽤和⼀些应⽤场景
reduce()的使⽤
reduce()⽅法为归并类⽅法,最常见的应⽤场景就是,计算数组中每⼀项的总和。
reduce()⽅法会遍历数组的每⼀项,它接收两个参数:
第⼀个参数是:每次遍历都会调⽤的函数,⽽这个函数⼜接收四个参数,分别为:前⼀个值、当前项、项⽬的索引和数组对象,
⽽这个函数的返回值,会传给下⼀次遍历时,执⾏的这个⽅法的第⼀个参数。
第⼆个参数是:归并基础的初始值。
上⾯哪些参数具体怎么⽤呢?我们继续往下看:
let arr = [1,2,3,4,5]
return prev+cur
})
上⾯这段代码,是⽤来计算数组总和的,reduce⽅法中,只传了第⼀个参数,也就是只传了⼀个函数,但第⼆个参数、初始值并没有传,当第⼆个值没有传的时候,第⼀次循环,prev的值,默认为数组的第⼀项,⽽cur的值为数组的第⼆项,也就是第⼀次循环,会return 1+2 ,这个时候,第⼀次循环返回的结果会传给下⼀次循环中⽅法的第⼀个参数,也就是说、第⼆次循环⽅法中prev的值,是第⼀次循环⽅法返回的结果。
let arr = [1,2,3,4,5]
return prev+cur
},10)
我们传⼊⼀下第⼆个参数,第⼀次循环,prev的值为reduce的第⼆个参数,也就是“归并基础的初始值”,⽽cur的值为数组的第⼀项,第⼀次循环会返回10+1 。
总结:
1.当reduce()⽅法的第⼆个值为空时,第⼀次循环⽅法中的第⼀个参数(prev)为数组的第⼀项值,第⼆个参数(cur)为数组的第⼆项值,反之,第⼀次循环⽅法中的第⼀个参数(prev)为reduce的第⼆个参数值,第⼆个参数(cur)为数组的第⼀项值。
1.计算总和
let arr = [1,2,3,4,5]
let result = duce((prev,cur)=>{
return prev+cur
})
console.log(result)
2.简单数组去重
let arr = [1,2,3,4,5,2,3]
let result = duce((prev,cur)=>{
js数组方法总结if (!prev.includes(cur)){
prev.push(cur)
}
return prev
},[])
console.log(result)
上⾯这个例⼦噢,第⼀次循环时,prev的值为[] ,cur的值为数组的第⼀项,也就是 1 ,然后判断 “1” 是否在[]数组中存在,显然是不存在
的,然后将“1”push到prev中,
并return prev ,当第⼆次循环时,prev接收到了第⼀次循环函数返回的值,所以prev就等于[1]了,以此类推。。
3.统计每个值,在数组中出现的次数
let arr = [1,2,3,4,5,2,3]
let result = duce((prev,cur)=>{
if (prev[cur] != undefined) {
prev[cur]++
} else {
prev[cur] = 1
}
return prev
},{})
console.log(result)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论