javascript reduce 未定义

标签 javascript reduce

我变得不确定。该代码无需该功能即可运行。我做错了什么?

var myArr = [ 1, 2, 3, 4, 5 ];

function getSums(arr) {
  arr.reduce(a => a+1, 0);
}

document.write(getSums(myArr));

最佳答案

三个问题:

  1. 使用reduce时,您(至少)使用前两个参数:累加器和当前条目。 (它还有其他参数,但前两个是最常用的。)

  2. 您的逻辑只是执行 a + 1,这并不是将数组中的值相加在一起,而是将 1 添加到该条目的值中。

  3. 您需要从 getSums 函数返回reduce 返回的值。

所以:

var myArr = [ 1, 2, 3, 4, 5 ];

function getSums(arr) {
  return arr.reduce((sum, a) => sum + a, 0);
//^^^^^^            ^^^^   ^    ^^^^^^
}

console.log(getSums(myArr));

或者您可以使用箭头语法定义 getSums,然后如果您使用简洁的函数体,则将隐含返回:

var myArr = [ 1, 2, 3, 4, 5 ];

let getSums = arr => arr.reduce((sum, a) => sum + a, 0);

console.log(getSums(myArr));

关于javascript reduce 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38172648/

相关文章:

javascript - 如何用 div id 替换 div 内的 <ul> ?

clojure - 如何在 Clojure 中映射很少使用的状态?

javascript - 添加新项目时的angular foreach问题

javascript - jQuery 从 html 和正文选择器中排除 div

apache-spark - Spark Streaming在减少时是否提供日期顺序的保证

hadoop - 限制Map Reduce API中reducer的输出

javascript - 减少包含对象而不是整数的多维数组

javascript - JS延迟后只处理一次输入

javascript - 使用简单 Javascript 或 Jquery 的日期选择器

c# - 如何阻止用户在 HTML 文件输入控件中手动编辑文件路径?