数组减少 javascript 打字稿

array reduce javascript typescript

只为我自己的文化。 我已经了解 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 第三次调用 -> 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?

提前致谢;)

当您执行 var sum = nums.reduce((a, b, c) => a + b +c , 0); 时,c *不是数字数组的成员。它实际上是一个 index。因此它不会减少到数组元素的总和。

更多

文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce?v=example