Array.prototype.reduce()
reduce()
方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
第一次执行回调函数时,不存在”上一次的计算结果”。如果需要回调函数从数组索引为 0 的元素开始执行,则需要传递初始值。否则,数组索引为 0 的元素将被作为初始值 initialValue,迭代器将从第二个元素开始执行(索引为 1 而不是 0)。
下面的例子能够帮助你理解 reduce()
的用处——计算数组所有元素的总和:
reducer 逐个遍历数组元素,每一步都将当前元素的值与上一步的计算结果相加(上一步的计算结果是当前元素之前所有元素的总和)——直到没有更多的元素被相加。 Copy to Clipboard callbackFn
一个 “reducer” 函数,包含四个参数:
previousValue
:上一次调用callbackFn
时的返回值。在第一次调用时,若指定了初始值initialValue
,其值则为initialValue
,否则为数组索引为 0 的元素array[0]
。currentValue
:数组中正在处理的元素。在第一次调用时,若指定了初始值initialValue
,其值则为数组索引为 0 的元素array[0]
,否则为array[1]
。currentIndex
:数组中正在处理的元素的索引。若指定了初始值initialValue
,则起始索引号为 0,否则从索引 1 起始。array
:用于遍历的数组。
initialValue
可选
作为第一次调用 callback
函数时参数 previousValue 的值。若指定了初始值 initialValue
,则 currentValue
则将使用数组第一个元素;否则 previousValue
将使用数组第一个元素,而 currentValue
将使用数组第二个元素。
使用 “reducer” 回调函数遍历整个数组后的结果。TypeError
数组为空且初始值 initialValue
未提供。
ECMAScript 规范描述了 reduce()
的行为:
callbackfn 应是一个接受四个参数的函数,
reduce
对于数组中第一个元素之后的每一个元素,按升序各调用一次回调函数。
callbackfn 被调用时会传入四个参数:
- previousValue(前一次调用 callbackfn 得到的返回值)
- currentValue(数组中正在处理的元素)
- currentIndex(数组中正在处理的元素的索引)
- 被遍历的对象
回调函数第一次执行时, previousValue 和 currentValue 的取值有两种情况:
- 如果调用
reduce()
时提供了 initialValue, previousValue 取值则为 initialValue, currentValue 则取数组中的第一个值。 - 如果没有提供 initialValue,那么 previousValue 取数组中的第一个值, currentValue 取数组中的第二个值。
如果数组为空且未指定初始值 initialValue,则会抛出 TypeError
。 reduce
不会直接改变调用它的对象,但对象可被调用的 callbackfn 所改变。
遍历的元素范围是在第一次调用 callbackfn 之前确定的。所以即使有元素在调用开始后被追加到数组中,这些元素也不会被 callbackfn 访问。如果数组现有的元素发生了变化,传递给 callbackfn 的值将会是元素被 reduce
访问时的值(即发生变化后的值);在调用 reduce
开始后,尚未被访问的元素若被删除,则其将不会被 reduce
访问。
如果数组仅有一个元素(无论位置如何)并且没有提供初始值 initialValue,或者有提供 initialValue 但是数组为空,那么此唯一值将被返回且 callbackfn
不会被执行。
提供初始值 initialValue 通常更安全,正如下面的例子,如果没有提供 initialValue,则 reduce
方法会因数组长度的不同(大于 1、等于 1、等于 0)而有不同的表现:
<span class="token keyword">const <span class="token function-variable function">getMax <span class="token operator">= <span class="token punctuation">(<span class="token parameter">a<span class="token punctuation">, b<span class="token punctuation">) <span class="token operator">=> Math<span class="token punctuation">.<span class="token function">max<span class="token punctuation">(a<span class="token punctuation">, b<span class="token punctuation">)<span class="token punctuation">;
</span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
假如运行以下无初始值的 reduce()
代码:
<span class="token keyword">const array <span class="token operator">= <span class="token punctuation">[<span class="token number">15<span class="token punctuation">, <span class="token number">16<span class="token punctuation">, <span class="token number">17<span class="token punctuation">, <span class="token number">18<span class="token punctuation">, <span class="token number">19<span class="token punctuation">]<span class="token punctuation">;
<span class="token keyword">function <span class="token function">reducer<span class="token punctuation">(<span class="token parameter">previous<span class="token punctuation">, current<span class="token punctuation">, index<span class="token punctuation">, array<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">const returns <span class="token operator">= previous <span class="token operator">+ current<span class="token punctuation">;
console<span class="token punctuation">.<span class="token function">log<span class="token punctuation">(<span class="token template-string"><span class="token template-punctuation string"><span class="token string">previous: <span class="token interpolation"><span class="token interpolation-punctuation punctuation">${previous<span class="token interpolation-punctuation punctuation">}<span class="token string">, current: <span class="token interpolation"><span class="token interpolation-punctuation punctuation">${current<span class="token interpolation-punctuation punctuation">}<span class="token string">, index: <span class="token interpolation"><span class="token interpolation-punctuation punctuation">${index<span class="token interpolation-punctuation punctuation">}<span class="token string">, returns: <span class="token interpolation"><span class="token interpolation-punctuation punctuation">${returns<span class="token interpolation-punctuation punctuation">}<span class="token template-punctuation string">
<span class="token punctuation">)<span class="token punctuation">;
<span class="token keyword">return returns<span class="token punctuation">;
<span class="token punctuation">}
array<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(reducer<span class="token punctuation">)<span class="token punctuation">;
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
callback 被调用四次,每次调用的参数和返回值如下表:
callback
iteration previousValue
currentValue
currentIndex
array
return value first call 15
16
1
[15, 16, 17, 18, 19]
31
second call 31
17
2
[15, 16, 17, 18, 19]
48
third call 48
18
3
[15, 16, 17, 18, 19]
66
fourth call 66
19
4
[15, 16, 17, 18, 19]
85
由 reduce()
返回的值将是最后一次回调返回值( 85
)。
在这里,我们以相同的算法 reduce 同一个数组,但提供 10
作为初始值:
<span class="token punctuation">[<span class="token number">15<span class="token punctuation">, <span class="token number">16<span class="token punctuation">, <span class="token number">17<span class="token punctuation">, <span class="token number">18<span class="token punctuation">, <span class="token number">19<span class="token punctuation">]<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">( <span class="token punctuation">(<span class="token parameter">previousValue<span class="token punctuation">, currentValue<span class="token punctuation">, currentIndex<span class="token punctuation">, array<span class="token punctuation">) <span class="token operator">=> previousValue <span class="token operator">+ currentValue<span class="token punctuation">, <span class="token number">10 <span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboardcallback
iteration previousValue
currentValue
currentIndex
array
return value first call 10
15
0
[15, 16, 17, 18, 19]
25
second call 25
16
1
[15, 16, 17, 18, 19]
41
third call 41
17
2
[15, 16, 17, 18, 19]
58
fourth call 58
18
3
[15, 16, 17, 18, 19]
76
fifth call 76
19
4
[15, 16, 17, 18, 19]
95
这种情况下 reduce()
返回的值是 95
。
<span class="token keyword">let sum <span class="token operator">= <span class="token punctuation">[<span class="token number">0<span class="token punctuation">, <span class="token number">1<span class="token punctuation">, <span class="token number">2<span class="token punctuation">, <span class="token number">3<span class="token punctuation">]<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(<span class="token keyword">function <span class="token punctuation">(<span class="token parameter">previousValue<span class="token punctuation">, currentValue<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">return previousValue <span class="token operator">+ currentValue
<span class="token punctuation">}<span class="token punctuation">, <span class="token number">0<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
你也可以写成箭头函数的形式:
<span class="token keyword">let total <span class="token operator">= <span class="token punctuation">[ <span class="token number">0<span class="token punctuation">, <span class="token number">1<span class="token punctuation">, <span class="token number">2<span class="token punctuation">, <span class="token number">3 <span class="token punctuation">]<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(
<span class="token punctuation">( <span class="token parameter">previousValue<span class="token punctuation">, currentValue <span class="token punctuation">) <span class="token operator">=> previousValue <span class="token operator">+ currentValue<span class="token punctuation">,
<span class="token number">0
<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
要累加对象数组中包含的值,必须提供 initialValue,以便各个 item 正确通过你的函数。
<span class="token keyword">let initialValue <span class="token operator">= <span class="token number">0
<span class="token keyword">let sum <span class="token operator">= <span class="token punctuation">[<span class="token punctuation">{<span class="token literal-property property">x<span class="token operator">: <span class="token number">1<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">{<span class="token literal-property property">x<span class="token operator">: <span class="token number">2<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">{<span class="token literal-property property">x<span class="token operator">: <span class="token number">3<span class="token punctuation">}<span class="token punctuation">]<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(<span class="token keyword">function <span class="token punctuation">(<span class="token parameter">previousValue<span class="token punctuation">, currentValue<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">return previousValue <span class="token operator">+ currentValue<span class="token punctuation">.x
<span class="token punctuation">}<span class="token punctuation">, initialValue<span class="token punctuation">)
console<span class="token punctuation">.<span class="token function">log<span class="token punctuation">(sum<span class="token punctuation">) </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
你也可以写成箭头函数的形式:
<span class="token keyword">let initialValue <span class="token operator">= <span class="token number">0
<span class="token keyword">let sum <span class="token operator">= <span class="token punctuation">[<span class="token punctuation">{<span class="token literal-property property">x<span class="token operator">: <span class="token number">1<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">{<span class="token literal-property property">x<span class="token operator">: <span class="token number">2<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">{<span class="token literal-property property">x<span class="token operator">: <span class="token number">3<span class="token punctuation">}<span class="token punctuation">]<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(
<span class="token punctuation">(<span class="token parameter">previousValue<span class="token punctuation">, currentValue<span class="token punctuation">) <span class="token operator">=> previousValue <span class="token operator">+ currentValue<span class="token punctuation">.x
<span class="token punctuation">, initialValue
<span class="token punctuation">)
console<span class="token punctuation">.<span class="token function">log<span class="token punctuation">(sum<span class="token punctuation">) </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
<span class="token keyword">let flattened <span class="token operator">= <span class="token punctuation">[<span class="token punctuation">[<span class="token number">0<span class="token punctuation">, <span class="token number">1<span class="token punctuation">]<span class="token punctuation">, <span class="token punctuation">[<span class="token number">2<span class="token punctuation">, <span class="token number">3<span class="token punctuation">]<span class="token punctuation">, <span class="token punctuation">[<span class="token number">4<span class="token punctuation">, <span class="token number">5<span class="token punctuation">]<span class="token punctuation">]<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(
<span class="token keyword">function<span class="token punctuation">(<span class="token parameter">previousValue<span class="token punctuation">, currentValue<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">return previousValue<span class="token punctuation">.<span class="token function">concat<span class="token punctuation">(currentValue<span class="token punctuation">)
<span class="token punctuation">}<span class="token punctuation">,
<span class="token punctuation">[<span class="token punctuation">]
<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
你也可以写成箭头函数的形式:
<span class="token keyword">let flattened <span class="token operator">= <span class="token punctuation">[<span class="token punctuation">[<span class="token number">0<span class="token punctuation">, <span class="token number">1<span class="token punctuation">]<span class="token punctuation">, <span class="token punctuation">[<span class="token number">2<span class="token punctuation">, <span class="token number">3<span class="token punctuation">]<span class="token punctuation">, <span class="token punctuation">[<span class="token number">4<span class="token punctuation">, <span class="token number">5<span class="token punctuation">]<span class="token punctuation">]<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(
<span class="token punctuation">( <span class="token parameter">previousValue<span class="token punctuation">, currentValue <span class="token punctuation">) <span class="token operator">=> previousValue<span class="token punctuation">.<span class="token function">concat<span class="token punctuation">(currentValue<span class="token punctuation">)<span class="token punctuation">,
<span class="token punctuation">[<span class="token punctuation">]
<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
<span class="token keyword">let names <span class="token operator">= <span class="token punctuation">[<span class="token string">'Alice'<span class="token punctuation">, <span class="token string">'Bob'<span class="token punctuation">, <span class="token string">'Tiff'<span class="token punctuation">, <span class="token string">'Bruce'<span class="token punctuation">, <span class="token string">'Alice'<span class="token punctuation">]
<span class="token keyword">let countedNames <span class="token operator">= names<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(<span class="token keyword">function <span class="token punctuation">(<span class="token parameter">allNames<span class="token punctuation">, name<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">if <span class="token punctuation">(name <span class="token keyword">in allNames<span class="token punctuation">) <span class="token punctuation">{
allNames<span class="token punctuation">[name<span class="token punctuation">]<span class="token operator">++
<span class="token punctuation">}
<span class="token keyword">else <span class="token punctuation">{
allNames<span class="token punctuation">[name<span class="token punctuation">] <span class="token operator">= <span class="token number">1
<span class="token punctuation">}
<span class="token keyword">return allNames
<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">{<span class="token punctuation">}<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
<span class="token keyword">let people <span class="token operator">= <span class="token punctuation">[
<span class="token punctuation">{ <span class="token literal-property property">name<span class="token operator">: <span class="token string">'Alice'<span class="token punctuation">, <span class="token literal-property property">age<span class="token operator">: <span class="token number">21 <span class="token punctuation">}<span class="token punctuation">,
<span class="token punctuation">{ <span class="token literal-property property">name<span class="token operator">: <span class="token string">'Max'<span class="token punctuation">, <span class="token literal-property property">age<span class="token operator">: <span class="token number">20 <span class="token punctuation">}<span class="token punctuation">,
<span class="token punctuation">{ <span class="token literal-property property">name<span class="token operator">: <span class="token string">'Jane'<span class="token punctuation">, <span class="token literal-property property">age<span class="token operator">: <span class="token number">20 <span class="token punctuation">}
<span class="token punctuation">]<span class="token punctuation">;
<span class="token keyword">function <span class="token function">groupBy<span class="token punctuation">(<span class="token parameter">objectArray<span class="token punctuation">, property<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">return objectArray<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(<span class="token keyword">function <span class="token punctuation">(<span class="token parameter">acc<span class="token punctuation">, obj<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">let key <span class="token operator">= obj<span class="token punctuation">[property<span class="token punctuation">]
<span class="token keyword">if <span class="token punctuation">(<span class="token operator">!acc<span class="token punctuation">[key<span class="token punctuation">]<span class="token punctuation">) <span class="token punctuation">{
acc<span class="token punctuation">[key<span class="token punctuation">] <span class="token operator">= <span class="token punctuation">[<span class="token punctuation">]
<span class="token punctuation">}
acc<span class="token punctuation">[key<span class="token punctuation">]<span class="token punctuation">.<span class="token function">push<span class="token punctuation">(obj<span class="token punctuation">)
<span class="token keyword">return acc
<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">{<span class="token punctuation">}<span class="token punctuation">)
<span class="token punctuation">}
<span class="token keyword">let groupedPeople <span class="token operator">= <span class="token function">groupBy<span class="token punctuation">(people<span class="token punctuation">, <span class="token string">'age'<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard Copy to Clipboard
备注: 如果你正在使用一个可以兼容Set
和 Array.from()
的环境,你可以使用 let arrayWithNoDuplicates = Array.from(new Set(myArray))
来获得一个相同元素被移除的数组。
<span class="token keyword">let myArray <span class="token operator">= <span class="token punctuation">[<span class="token string">'a'<span class="token punctuation">, <span class="token string">'b'<span class="token punctuation">, <span class="token string">'a'<span class="token punctuation">, <span class="token string">'b'<span class="token punctuation">, <span class="token string">'c'<span class="token punctuation">, <span class="token string">'e'<span class="token punctuation">, <span class="token string">'e'<span class="token punctuation">, <span class="token string">'c'<span class="token punctuation">, <span class="token string">'d'<span class="token punctuation">, <span class="token string">'d'<span class="token punctuation">, <span class="token string">'d'<span class="token punctuation">, <span class="token string">'d'<span class="token punctuation">]
<span class="token keyword">let myArrayWithNoDuplicates <span class="token operator">= myArray<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(<span class="token keyword">function <span class="token punctuation">(<span class="token parameter">previousValue<span class="token punctuation">, currentValue<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">if <span class="token punctuation">(previousValue<span class="token punctuation">.<span class="token function">indexOf<span class="token punctuation">(currentValue<span class="token punctuation">) <span class="token operator">=== <span class="token operator">-<span class="token number">1<span class="token punctuation">) <span class="token punctuation">{
previousValue<span class="token punctuation">.<span class="token function">push<span class="token punctuation">(currentValue<span class="token punctuation">)
<span class="token punctuation">}
<span class="token keyword">return previousValue
<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">[<span class="token punctuation">]<span class="token punctuation">)
console<span class="token punctuation">.<span class="token function">log<span class="token punctuation">(myArrayWithNoDuplicates<span class="token punctuation">)
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
使用 Array.filter()
和 Array.map()
会遍历数组两次,而使用具有相同效果的 Array.reduce()
只需要遍历一次,这样做更加高效。(如果你喜欢 for
循环,你可用使用 Array.forEach()
以在一次遍历中实现过滤和映射数组)
<span class="token keyword">const numbers <span class="token operator">= <span class="token punctuation">[<span class="token operator">-<span class="token number">5<span class="token punctuation">, <span class="token number">6<span class="token punctuation">, <span class="token number">2<span class="token punctuation">, <span class="token number">0<span class="token punctuation">]<span class="token punctuation">;
<span class="token keyword">const doubledPositiveNumbers <span class="token operator">= numbers<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(<span class="token punctuation">(<span class="token parameter">previousValue<span class="token punctuation">, currentValue<span class="token punctuation">) <span class="token operator">=> <span class="token punctuation">{
<span class="token keyword">if <span class="token punctuation">(currentValue <span class="token operator">> <span class="token number">0<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">const doubled <span class="token operator">= currentValue <span class="token operator">* <span class="token number">2<span class="token punctuation">;
previousValue<span class="token punctuation">.<span class="token function">push<span class="token punctuation">(doubled<span class="token punctuation">)<span class="token punctuation">;
<span class="token punctuation">}
<span class="token keyword">return previousValue<span class="token punctuation">;
<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">[<span class="token punctuation">]<span class="token punctuation">)<span class="token punctuation">;
console<span class="token punctuation">.<span class="token function">log<span class="token punctuation">(doubledPositiveNumbers<span class="token punctuation">)<span class="token punctuation">; </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard Copy to Clipboard Copy to Clipboard
<span class="token keyword">if <span class="token punctuation">(<span class="token operator">!<span class="token class-name">Array<span class="token punctuation">.prototype<span class="token punctuation">.mapUsingReduce<span class="token punctuation">) <span class="token punctuation">{
<span class="token class-name">Array<span class="token punctuation">.prototype<span class="token punctuation">.<span class="token function-variable function">mapUsingReduce <span class="token operator">= <span class="token keyword">function<span class="token punctuation">(<span class="token parameter">callback<span class="token punctuation">, initialValue<span class="token punctuation">) <span class="token punctuation">{
<span class="token keyword">return <span class="token keyword">this<span class="token punctuation">.<span class="token function">reduce<span class="token punctuation">(<span class="token keyword">function<span class="token punctuation">(<span class="token parameter">mappedArray<span class="token punctuation">, currentValue<span class="token punctuation">, currentIndex<span class="token punctuation">, array<span class="token punctuation">) <span class="token punctuation">{
mappedArray<span class="token punctuation">[currentIndex<span class="token punctuation">] <span class="token operator">= <span class="token function">callback<span class="token punctuation">.<span class="token function">call<span class="token punctuation">(initialValue<span class="token punctuation">, currentValue<span class="token punctuation">, currentIndex<span class="token punctuation">, array<span class="token punctuation">)
<span class="token keyword">return mappedArray
<span class="token punctuation">}<span class="token punctuation">, <span class="token punctuation">[<span class="token punctuation">]<span class="token punctuation">)
<span class="token punctuation">}
<span class="token punctuation">}
<span class="token punctuation">[<span class="token number">1<span class="token punctuation">, <span class="token number">2<span class="token punctuation">, <span class="token punctuation">, <span class="token number">3<span class="token punctuation">]<span class="token punctuation">.<span class="token function">mapUsingReduce<span class="token punctuation">(
<span class="token punctuation">(<span class="token parameter">currentValue<span class="token punctuation">, currentIndex<span class="token punctuation">, array<span class="token punctuation">) <span class="token operator">=> currentValue <span class="token operator">+ currentIndex <span class="token operator">+ array<span class="token punctuation">.length
<span class="token punctuation">) </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Copy to Clipboard
Specification
ECMAScript Language Specification
sec-array.prototype.reduce Report problems with this compatibility data on GitHubdesktop mobile server
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
Deno
Node.js
3
Toggle history
12
Toggle history
3
Toggle history
9
Toggle history
10.5
Toggle history
5
Toggle history
18
Toggle history
4
Toggle history
14
Toggle history
4
Toggle history
1.0
Toggle history
37
Toggle history
1.0
Toggle history
0.10.0
Toggle history
Legend
Full supportFull support
Original: https://www.cnblogs.com/sexintercourse/p/16546545.html
Author: 漫思
Title: Array.prototype.reduce()
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553444/
转载文章受原作者版权保护。转载请注明原作者出处!