js的reduce方法
2020-06-15 本文已影响0人
Lia代码猪崽
定义和用法
参考: https://www.runoob.com/jsref/jsref-reduce.html
reduce()
方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce()
可以作为一个高阶函数,用于函数的 compose。
注意: reduce()
对于空数组是不会执行回调函数的。
语法
参考: https://www.runoob.com/jsref/jsref-reduce.html
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数
参考: https://www.runoob.com/jsref/jsref-reduce.html
参数 | 描述 |
---|---|
function(total, currentValue, index, arr) 必需。用于执行每个数组元素的函数。 | 必需。用于执行每个数组元素的函数。 函数参数: 参数 描述 total 必需。初始值, 或者计算结束后的返回值。 currentValue 必需。当前元素 currentIndex 可选。当前元素的索引 arr 可选。当前元素所属的数组对象。 |
initialValue | 可选。传递给函数的初始值 |
执行每个数组元素的函数的参数详解:
参数 | 描述 |
---|---|
total | 必需。初始值, 或者计算结束后的返回值。 |
currentValue | 必需。当前元素 |
currentIndex | 可选。当前元素的索引 |
arr | 可选。当前元素所属的数组对象。 |
练练手
参考:https://www.jb51.net/article/163236.htm
[[0, 1], [2, 3]].reduce(
(acc, cur) => {
return acc.concat(cur);
},
[1, 2]
);
解析:
- 这方法的初始值为
[1, 2]
-
[[0, 1], [2, 3]]
数组调用了reduce()
方法,此数组有两个元素,元素都是数组 -
reduce()
方法里传入了一个箭头函数,acc
为累积计算的值,cur
参数代表当前元素的值,返回结果为拼接数组
所以答案为:[1,2, 0, 1, 2, 3]
-
[1, 2].concat([0, 1]);
结果为[1,2, 0, 1]
-
[1,2, 0, 1].concat([2, 3]);
结果为[1,2, 0, 1, 2, 3]