JavaScript教程:Array 数组-reduce()方法 作者:马育民 • 2024-04-09 17:27 • 阅读:10018 # 说明 数组的`reduce()`方法,接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。 [![](http://65242847.gitee.io/pic/hadoop/Snipaste_2021-11-13_14-50-12.png)](http://65242847.gitee.io/pic/hadoop/Snipaste_2021-11-13_14-50-12.png) # 函数声明 ``` array.reduce(fun, initialValue) ``` **形参:** - fun:函数 - initialValue:可选。传递给函数的初始值 **返回值:** fun每一次执行后,最后的结果 ### fun函数 ``` function(total, currentValue, currentIndex, arr) ``` **形参:** - total:必需。 - 第一次执行时:是第一个元素或 `initialValue` 初始值 - 再次执行时,是第一次计算结束后的返回值 - currentValue:必需。当前元素 - currentIndex:可选。当前元素的索引 - arr:可选。当前元素所属的数组对象。 **返回值**:必须要返回一个结果,才能继续往下算 ### 例子 ``` var arr = [2,4,6,8] function fun(total,cur,index){ console.log("第"+index+"次执行,total:",total,",cur:",cur) return total + cur // 求和 } var res = arr.reduce( fun ) console.log("最终结果:",res) ``` 执行结果: ``` 第1次执行,total: 2 ,cur: 4 第2次执行,total: 6 ,cur: 6 第3次执行,total: 12 ,cur: 8 最终结果: 20 ``` **总结:** - 第1次执行时,`fun`函数形参中, `total` 是数组第1个元素, `cur`(表示当前元素) 是数组第2个元素, `index`(索引) 是 `1`。 返回值:`total + cur` - 第2次执行时,`fun`函数形参中, `total` 是上一次 `fun` 函数的运行结果, `cur`(表示当前元素) 是数组第3个元素, `index`(索引) 是 `2`。 返回值:`total + cur` - 第3次执行时,`fun`函数形参中, `total` 是上一次 `fun` 函数的运行结果, `cur`(表示当前元素) 是数组第4个元素, `index`(索引) 是 `3`。 返回值:`total + cur` # 传 initialValue 值 ### 例子 ``` var res = arr.reduce( fun , 0) ``` 执行结果: ``` 第0次执行,total: 666 ,cur: 2 第1次执行,total: 668 ,cur: 4 第2次执行,total: 672 ,cur: 6 第3次执行,total: 678 ,cur: 8 最终结果: 686 ``` **总结:** - 第1次执行时,`fun`函数形参中, `total` 是 **初始值:`666` (与上面不同)**, `cur`(表示当前元素) 是数组 **第1个元素(与上面不同)**, `index`(索引) 是 **`0`(与上面不同)**。 返回值:`total + cur` - 第2次执行时,`fun`函数形参中, `total` 是上一次 `fun` 函数的运行结果, `cur`(表示当前元素) 是数组第2个元素, `index`(索引) 是 `2`。 返回值:`total + cur` - 第3次执行时,`fun`函数形参中, `total` 是上一次 `fun` 函数的运行结果, `cur`(表示当前元素) 是数组第3个元素, `index`(索引) 是 `3`。 返回值:`total + cur` - 第4次执行时,`fun`函数形参中, `total` 是上一次 `fun` 函数的运行结果, `cur`(表示当前元素) 是数组第4个元素, `index`(索引) 是 `3`。 返回值:`total + cur` 原文出处:http://www.malaoshi.top/show_1IX7TnITT5iK.html