JavaScript总结数组中的数字

时间:2012-08-02 10:30:27

标签: javascript arrays

我有一个以下数组var total = [10, 0.25, 12.75, 1, 0];

当我这样做时:

 for (var i= 0; i< total.length; i++) {
      totalNo += parseInt(+(total[i]));
 }

totalNo始终是一个完整的数字。看起来跳过点值之后的.XX。如何确保正确添加?

3 个答案:

答案 0 :(得分:4)

使用parseFloat()代替parseInt()来保留小数部分

for (var i= 0; i< total.length; i++) {
      totalNo += parseFloat(total[i]);
}

注1:无需写+(total [i])
注意2:正如Utkanos所指出的,如果你的数组值只包含浮点值,那么甚至不需要parseFloat

答案 1 :(得分:4)

您不需要运行任何数字强制函数(例如parseInt) - 您的数组值已经是数字。

如果ECMA5解决方案可以接受,您可以使用reduce()

var arr = [10, 0.25, 12.75, 1, 0];
alert(arr.reduce(function(curr_total, val) {
    return curr_total + val;
}, 0)); //24

答案 2 :(得分:0)

这里你不需要parseInt或parseFloat。如果考虑速度,对于大型阵列,使用原生循环,它会快得多!但要注意你如何编码 -

var total = [10, 0.25, 12.75, 1, 0],totalNo=0;
var len=total.length;
for(var i= 0; i<len; i++) 
{
    totalNo = totalNo+total[i];
}

请注意,totalNo + = total [i]慢于totalNo + total [i]