计算数组中的总数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算数组中的总数相关的知识,希望对你有一定的参考价值。

我正在尝试编写一个代码来计算数组长度为3的总数。每个3个整数来自提示符。

现在我的代码如下:

var num1 = prompt("First number");
var num2 = prompt("Second number");
var num3 = prompt("Third number");

var new_array = [num1, num2, num3]

function sum_three(new_array)
    {
        return new_array[0] + new_array[1] + new_array[2];
    }

document.write(sum_three(new_array));

但是当我看到结果时,似乎就是这样

return new_array[0] + new_array[1] + new_array[2];

部分不计算,它只是连接数字。我该如何工作?

答案

键盘输入的输入是字符串。如果在字符串上使用'addition'+,则将它们连接起来。您必须将字符串中包含的数字转换(解析)为实际的javascript数字。

一种简单的方法是在每个字符串变量前添加一个+。它会尽力将你的字符串“解释”为数字

return +new_array[0] + +new_array[1] + +new_array[2];

实际上,正确的技术术语是“强制”,感谢@NeilDocherty,更多信息在这里https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch4.md

展示行为的简单示例:

console.log("3" + "5"); // outputs 35
console.log(+"3" + +"5"); // outputs 8
另一答案

更现代的解决方案是使用Array.prototype.reduce方法。

我发现这更具可读性,但是如果你要支持IE9之前的浏览器,那么你将需要polyfill

var new_array = [prompt("First number"), prompt("Second number"), prompt("Third number")];

function array_sum(accumulator, currentValue) {
  return parseFloat(accumulator.toString()) + parseFloat(currentValue.toString());
}

function sum_three(arr) {
  return arr.reduce(array_sum);
}
document.write(sum_three(new_array));

以上是关于计算数组中的总数的主要内容,如果未能解决你的问题,请参考以下文章

获取数组中的项目总数

计算总和可被 k 整除的子序列总数

我正在编写代码以找出总数之间的差异。二进制数中的 1 和 0,使用数组

计算图像中白色像素的总数会引发错误

如何合计计算字段的每个枚举的总数?

如何使用Javascript计算数组中的相邻数字?