【问题标题】:array reduce javascript typescript数组减少javascript打字稿
【发布时间】: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


【解决方案1】:

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

更多

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-06
    • 2021-10-24
    • 1970-01-01
    • 2020-04-06
    • 2021-03-05
    • 2022-01-03
    • 2021-08-07
    • 2023-02-24
    相关资源
    最近更新 更多