数组减少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) => 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 将派生字符串数组减少为文字类型