【发布时间】:2017-09-22 09:51:59
【问题描述】:
只是为了我自己的文化。 我已经了解 reduce 原理的工作原理
var sumAll = function(...nums: number[]):void{
var sum = nums.reduce((a, b) => a + b , 0);
document.write("sum: " + sum + "<br/>");
}
sumAll(1,2,3,4,5);
它给出 15,因为我们从 0 开始。
and 1+2= 3 first call -> 1+2 被 3 替换
3+3=6 秒调用 3 -> 3 +3 替换为 6
6+4 = 10 thrid call -> 6+4 被 10 替换
10+5 = 15 第四次调用 -> 10 + 5 替换为最终结果 15
没关系。
但是当我这样做时会发生什么
var sumAll = function(...nums: number[]):void{
var sum = nums.reduce((a, b, c) => a + b +c , 0);
document.write("sum: " + sum + "<br/>");
}
sumAll(1,2,3,4,5);
结果是 25,但我不明白为什么... 我猜的
第一次调用:1+2+3 = 6(1+2+3被6代替)
第二次调用6+4+5 = 15(6+4+5被15替换为最终结果)
但为什么结果是 25?
提前致谢;)
【问题讨论】:
-
您阅读文档了吗?它会告诉你确切的原因。 MDN:传递给回调的第三个参数是当前正在处理的数组元素的索引值。
-
点击此链接 - pythontutor.com/…
-
好的,谢谢你们,我明白了:)确实我的错误是没有将c视为索引:)
标签: javascript arrays typescript reduce