数组减少javascript打字稿

时间:2017-04-25 11:42:06

标签: javascript arrays typescript reduce

只为了我自己的文化。 我已经理解了如何使用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?

提前致谢;)

1 个答案:

答案 0 :(得分:1)

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

更多

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