Javascript值似乎是连续的,而不是一起添加

时间:2012-03-08 18:01:38

标签: javascript

我有一个函数,哪个作业是从数组中获取总数,但它不起作用。例如。我的数组看起来像

    [["10", "", ""], ["10", "", ""], ["10", "", ""]]

所以我期待的价值是30但是我在console.log中获得了0101010

function createAv(results){
    var av = results;

    var a1 = 0;
    var a2 = 0;
    var a3 = 0;

    function percentage(av){
    var n1 = 0;
    for (var index = 0; index < av.length; index++) {

            n1 += av[index][0];
        a1 = (av[0][0] / n1) * 100; 
        a2 = (av[1][0] / n1) * 100; 
        a3 = (av[2][0] / n1) * 100; 
    }
      return n1;
    }

    var test = (percentage(av));

    return test;

  }

4 个答案:

答案 0 :(得分:3)

数组中的值是字符串,因此JavaScript将它们连接起来。尝试使用parseInt()将数组值更改为数字。

这是jsFiddle,说明了如何执行此操作。

答案 1 :(得分:3)

您的值数组是字符串,请尝试将它们转换为整数。

n1 + = Integer.parseInt(av [index] [0]);

或改变你的数组

[[10,0,0],[10,0,0],[10,0,0]]

答案 2 :(得分:1)

这是因为数字是字符串。您可以将字符串添加到其他字符串(甚至为这些字符串添加数值),但最终会得到一个连接字符串。

如果他们需要成为字符串,那没关系 - 您可以使用parseInt()将其视为数字。

for (var index = 0; index < av.length; index++) {

    n1 += parseInt(av[index][0], 10);

    a1 = (parseInt(av[0][0], 10) / n1) * 100; 
    a2 = (parseInt(av[1][0], 10) / n1) * 100; 
    a3 = (parseInt(av[2][0], 10) / n1) * 100; 
}

答案 3 :(得分:1)

您可以尝试将其转换为int

n1 += parseInt(av[index][0]);