数组减少javascript打字稿

Posted

技术标签:

【中文标题】数组减少javascript打字稿【英文标题】:array reduce javascript typescript 【发布时间】: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视为索引:) 【参考方案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

【讨论】:

以上是关于数组减少javascript打字稿的主要内容,如果未能解决你的问题,请参考以下文章

打字稿转换 Object.entries 将派生字符串数组减少为文字类型

在javascript中将数字转换为数组| angular7的打字稿[重复]

打字稿中数组的两种写作有啥区别

无法从打字稿中的 json 对象获取数组响应

打字稿中的 Javascript

打字稿捆绑器到打字稿文件