计算数组中的总数

我正在尝试编写一个计算总长度为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

您还可以使用parseInt,就像你已经做到的一样。

有两个之间的差异,例如参见这篇文章:parseInt vs unary plus - when to use which

尤其parseInt函数将返回NaN空字符串,而+将强制其为0

回答:

更现代的解决方案是使用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));

以上是 计算数组中的总数 的全部内容, 来源链接: utcz.com/qa/261631.html

回到顶部