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