语法
/** * @param callback {function} 第一个参数是一个回掉函数 不可省略 * @param initialValue 初始化值,是给callback函数第一个参数赋值用的 * @return 返回计算结果 */ Array.prototype.reduce(callback,initialValue) /** * 作为reduce的回掉函数 * @param total 必需。初始值, 或者计算结束后的返回值, * 如果initialValue存在,则将initialValue赋值给total,反之则是将数组第一个元素赋值给total * @param currentValue 必需。当前元素 。 * 如果initialValue存在,currentValue是从第一个数组元素开始,反正从第二个数组元素开始,第一个元素用于给total赋值 * @param currentIndex 可选。当前元素的索引 * @param arr 可选。当前元素所属的数组对象 */ function callback(total,currentValue,currentIndex,arr){}
用法
- 求和
var arr=[1,2,3,4,5] function sum(arr){ /** * 函数首先把arr第一项1 赋值给total,这时total=1,currentValue=2 * 然后 进行 tatol+currentValue运算 即 1+2 把计算结果再次给total 赋值 * 可以把 return total + currentValue 理解为 total= total + currentValue * 后面的以此类推 这样实现了一个累加过程。 * 最后返回的是total的值,即1+2+3+4+5 * 实现了一个求和 */ return arr.reduce(function (total,currentValue) { console.log(currentValue) // 从2开始遍历 1已经赋值给total return total + currentValue }) } sum(arr) //15
- 求最大值
var arr2=[2,5,3,9,1,14,6,7] function maxNum(arr){ return arr.reduce(function (max,currentValue){ // 只需要记住return的值 是赋值给第一个参数的 return max>currentValue? max:currentValue }) } maxNum(arr2) //14
总结: 在日常的项目中 reduce使用的非常少,个人觉得只要理解其运行的过程就可以了。