reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?自己理解 就是逼格高一点,别的没有什么差别
reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
arr.reduce(callback,[initialValue])
let arr = [10, 11,12,13,14]
arr.reduce((per , cur , index , arr)=>{
console.warn(per , cur , index , arr)
})
输出:
per => previousValue => 上一次调用回调返回的值,或者是提供的初始值(initialValue)
cur => currentValue => 数组中当前被处理的元素
index => index => 当前元素在数组中的索引值
arr => arr => 调用的原数组
此时,大家可以发现数组是五项 ,但输出了四次 ,它默认是从所引值1的位置开始遍历的,如果想让它从索引值0的位置遍历时,可以看下面
let arr = [10, 11,12,13,14]
arr.reduce((per , cur , index , arr)=>{
console.warn(per , cur , index , arr)
} , 0)
大家会发现会有4个undefined 出现 那是因为reduce()这个方法中要有返回值的
let arr = [10, 11,12,13,14]
console.log(arr.reduce((per , cur , index , arr)=>{
console.warn(per , cur , index , arr)
return per + cur
} , 0))