【问题标题】:Calculate sum of element in array [duplicate]计算数组中元素的总和[重复]
【发布时间】:2021-07-19 04:25:53
【问题描述】:

我刚开始学习 Javascript,并且有一个关于查找数组总和的问题。线程要求如下:

"定义一个空数组。同时创建两个函数: 1/ addNumber() 从 HTML 文档 (id="num") 的文本输入字段中读取一个值,并将其添加到数组的末尾。 2/ printInfo() 将数组中元素的数量输出到控制台,然后是它们的平均值。 HTML 文档有两个用于调用函数的按钮。 "

我能够找到可以在数组中找到总元素的部分,但是当我尝试使用 reduce() 方法计算该数组的总和时。但不知何故,结果显示为每个元素连接在一起的 string,而不是最终数字。这个数组的和应该是 2 + 7 + 10 + 12 + 25 = 56

var myArray = [];
function addNumber(){
    var num = document.getElementById("num").value;
    myArray.push(num);
}

function printInfo(){
    var arr=myArray;
    var array=myArray.length;
    var sum = arr.reduce(function(a, b){return a + b;}, 0);
    console.log(sum);
    console.log("The array has " + array + " elements.");
    console.log("The average of the values is " );
}

Here is the picture

【问题讨论】:

  • 您没有在此处打印sumconsole.log("The average of the values is " );。使用console.log("The average of the values is " +sum);
  • @Martin - 嗨,感谢您的解决方案,但我的意思是我目前正在处理的总和是从“document.getElementById("num").value”中字符串化的。所以结果只是 027102512,而不是总共 56 个。这就是我卡住的地方。

标签: javascript


【解决方案1】:

输入元素的值总是字符串。但是,您可以使用 parseInt() 将它们更改为数字。

myArray.push(parseInt(num));

【讨论】:

  • 无论是不是type="number",它们总是字符串
  • @adiga - 真的,谢谢。
  • @JohnTyner - 谢谢约翰,我只是按照您的解决方案修复了我的代码,现在它工作得很好。我参加的课程,他们在理论上没有提到使用“parseInt()”将DOM元素转换为数字的任何内容。我想我将不得不阅读更多文档。谢谢你。 :))
  • @nsuspect - 另一种转换为数字的方法是在其前面放置一个加号 - 如myArray.push(+num)
  • @JohnTyner - 很酷,有趣的方法,我现在试试,再次感谢 :))
猜你喜欢
  • 2021-06-05
  • 1970-01-01
  • 2014-05-08
  • 2019-02-21
  • 1970-01-01
  • 2020-09-17
  • 2016-04-21
  • 2020-12-01
  • 1970-01-01
相关资源
最近更新 更多