JavaScript数组-将值相加

JavaScript Array- adding the values together

本文关键字:数组 JavaScript      更新时间:2023-09-26

我正在尝试获取用户输入的数字。将这些数字存储在一个数组中,然后将数组中的所有值相加,得到一个总数。我用数字1-7来测试。我打印数组的输出,得到:

 1,2,3,4,5,6,7

返回,因此将数据存储在数组中似乎正在工作。然而,当我尝试在数组中添加值时,我会得到:

01234567

这使得函数看起来只是将数字推到一起。我觉得我在这里错过了一些非常明显的东西,但我不知道是什么。任何帮助都将不胜感激。

var again = "no";
var SIZE = 7;
var pints = [];
var totalPints = 0;
var averagePints = 0;
var highPints = 0;
var lowPints = 0;
getPints(pints[SIZE]);
getTotal(pints[SIZE]);
println(pints);
println(totalPints);

function getPints()
{
    counter = 0;
    while (counter < 7)
    {
    pints[counter] = prompt("Enter the number of pints");
    counter = counter + 1;
    }
}
function getTotal()
{
    counter = 0;
    totalPints = 0
    for (var counter = 0; counter < 7; counter++)
    {
        totalPints += pints[counter]    
    }
}

您可以使用parseInt来转换pints值,如

totalPints += parseInt(pints[counter], 10);

你不必像这个那样硬编码长度

for (var counter = 0; counter < 7; counter++)

相反,你可以像这个一样使用pints.length

for (var counter = 0; counter < pints.length; counter++)

您的数组包含字符串而不是整数值,而不是

totalPints += pints[counter];

尝试使用类似的东西-

totalPints += parseInt(pints[counter], 10);

这是因为每个数字都被读取为字符串,而不是数字。更改:

pints[counter] = prompt("Enter the number of pints");

至:

pints[counter] = +prompt("Enter the number of pints");

将值转换为数字,以便从+运算符获得加法而不是串联。

["1", "2", "3", "4", "5", "6", "7"]
01234567 

这是您的代码产生的输出。请注意,数组中的值是用引号括起来的,这意味着它们的类型是String.。当将+与字符串一起使用时,会得到字符串串联。

这就是为什么你必须把它们转换成一个数字。

有多种方法可以做到这一点。

-> parseInt("5")
-> 5
-> "5" * 1
-> 5
-> Number("5")
-> 5

更改

totalPints += pints[counter]

totalPints += parseInt(pints[counter])

parseInt将字符串值转换为整数。