我有一个函数,哪个作业是从数组中获取总数,但它不起作用。例如。我的数组看起来像
[["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;
}
答案 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]);