只为了我自己的文化。 我已经理解了如何使用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开始。
和1 + 2 = 3首次通话 - &gt; 1 + 2替换为3
3 + 3 = 6秒呼叫3 - > 3 +3被6替换
6 + 4 = 10 thrid call - &gt; 6 + 4被替换为10
10 + 5 = 15第四次通话 - &gt; 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?
提前致谢;)
答案 0 :(得分:1)
执行var sum = nums.reduce((a, b, c) => a + b +c , 0);
时,c
*不是数字数组的成员。它实际上是索引。因此,它不会减少到数组元素的总和。