JavaScript数组 - 将值一起添加

时间:2013-12-16 05:17:09

标签: javascript arrays function addition

我正在尝试接受用户输入的数字。将这些数字存储在数组中,然后将数组中的所有值相加以获得总数。我正在使用数字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]    
    }

}

5 个答案:

答案 0 :(得分:0)

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

totalPints += pints[counter];

尝试使用类似的东西 -

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

答案 1 :(得分:0)

这种情况会发生,因为每个数字都是字符串而不是数字。变化:

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

为:

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

将值转换为数字,以便从+运算符中获取而不是连接。

答案 2 :(得分:0)

您可以使用parseInt转换pints这样的值

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

你不必像这样硬编码长度

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

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

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

答案 3 :(得分:0)

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

这是您的代码生成的输出。请注意,数组中的值使用引号,这意味着它们的类型为String.当使用带有字符串的+时,您将获得字符串连接。

这就是你必须将它们转换为数字的原因。

有多种方法可以做到。

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

答案 4 :(得分:0)

更改

totalPints += pints[counter]

totalPints += parseInt(pints[counter])

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