使用JavaScript在数组中求和总计

使用JavaScript在数组中求和总计,javascript,Javascript,在计算数组中的值时,我得到如下结果:total=“0212.16967.04”。 本例中的正确总数为:1179.20 函数calculateSum(){ //构建数字数组 amtArray=[]; $('.amount')。每个(函数(索引,值){ amtArray.push($(this.text()| | 0); }); //计算所有值并返回结果 var sum=sumArray(amtArray); console.log('sum->',sum) } 函数数组(输入){ var合计=0

在计算数组中的值时,我得到如下结果:total=“0212.16967.04”。 本例中的正确总数为:1179.20

函数calculateSum(){
//构建数字数组
amtArray=[];
$('.amount')。每个(函数(索引,值){
amtArray.push($(this.text()| | 0);
});
//计算所有值并返回结果
var sum=sumArray(amtArray);
console.log('sum->',sum)
}
函数数组(输入){
var合计=0;

对于(idx=0;idx您需要使用一个(或通过使用
number
parseFloat
或任何其他需要数字的运算符)将值从字符串强制转换为数字,否则,如果任何操作数是字符串,则所有部分都将被视为字符串并合并

total += +input[idx];
//       ^

您需要使用一个(或使用
number
parseFloat
或任何其他需要数字的运算符)将值从字符串强制转换为数字,否则,如果任何操作数是字符串,则所有部分都将被视为字符串并合并

total += +input[idx];
//       ^

这里的错误是连接字符串,下面是一个解决方案:

var数组=[“212.16”,“967.04”]
函数数组(输入){
var合计=0;

对于(idx=0;idx这里的错误是您正在连接字符串,这里有一个解决方案:

var数组=[“212.16”,“967.04”]
函数数组(输入){
var合计=0;

对于(idx=0;idx您正在连接字符串值,而不是添加流动的定点数字。您可以使用parseFloat()将字符串转换为浮点数,如下所示:

function sumArray(input) {  //input = (2) ["212.16", "967.04"]
    var total = 0;
    for (idx=0; idx <= input.length-1; idx++) {
        total += parseFloat(input[idx]);    
    }
    return total;  
}
函数sumArray(输入){//input=(2)[“212.16”,“967.04”]
var合计=0;

对于(idx=0;idx您正在连接字符串值,而不是添加流动的定点数字。您可以使用parseFloat()将字符串转换为浮点数,如下所示:

function sumArray(input) {  //input = (2) ["212.16", "967.04"]
    var total = 0;
    for (idx=0; idx <= input.length-1; idx++) {
        total += parseFloat(input[idx]);    
    }
    return total;  
}
函数sumArray(输入){//input=(2)[“212.16”,“967.04”]
var合计=0;

对于函数
sumArray
中的(idx=0;idx),您可以直接返回用于处理数值的结果:

const sumArray=arr=>arr.reduce((a,b)=>a+Number(b),0);

console.log(sumArray([“212.16”,“967.04”]);
在函数
sumArray
中,您可以直接返回用于处理数值的结果:

const sumArray=arr=>arr.reduce((a,b)=>a+Number(b),0);

log(sumArray([“212.16”,“967.04”]);
除了使用一元数parsefloat外,您还应该使用toPrecision来获取您在问题中指出的最后一个零

var val=document.getElementsByClassName('amount');
函数calculateSum(){
var合计=0;
对于(变量i=0;i
212.16

967.04
除了使用一元数parsefloat外,您还应该使用toPrecision来获取您在问题中指出的最后一个零

var val=document.getElementsByClassName('amount');
函数calculateSum(){
var合计=0;
对于(变量i=0;i
212.16
967.04
在开发人员控制台上尝试
“212.16”+“967.04”
,它是字符串连接。在使用
+
操作符之前,转换为
数字。可能重复使用parseFloat()
$('.amount')。每个(函数(索引,值){amtArray.push(parseFloat($(this.text())| | 0)})
尝试
“212.16”开发者控制台上的+“967.04”
-它是字符串连接。在使用
+
操作符之前转换为
number
。可能重复使用parseFloat()
$('.amount')。每个(函数(索引,值){amtArray.push(parseFloat($(this.text())| | 0);