计算数组中的总数
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));
以上是关于计算数组中的总数的主要内容,如果未能解决你的问题,请参考以下文章