parseInt在循环中不能很好地工作

时间:2015-07-11 10:04:19

标签: javascript jquery

arr = ["1","2"];

$.each(arr,function(i,obj){
                sum += parseInt(obj);
});
console.log(sum);

我希望总和为3但结果为12?我以为parseInt已经完成了这项工作?这有什么不对?

4 个答案:

答案 0 :(得分:2)

行为的差异在于你如何初始化和

if var sum = 0; -> result will be as expected i.e. 3

if var sum = ""; -> result will be 12 as coming because sum is string

答案 1 :(得分:1)

  

这里是工作代码

 var arr = ["1","2"];
    var sum=0;
    $.each(arr,function(i,obj){
                    sum += parseInt(obj);
    });
    alert(sum);

答案 2 :(得分:1)

@Alice Xu你的代码实际上没有错误。这是问题,因为在此之前的某个地方,你的代码和变量被视为空字符串所以这里添加

sum += parseInt(obj); 

对象正在转换为Int,但是再次转换为字符串,因为sum是字符串类型。所以我们得到的是1和2的连接,即" 12"正如你所指出的那样,如果将sum初始化为零,那就没问题了。

我已经运行了你的代码并将NaN作为输出,因为我根本没有初始化总和。您似乎正在将其初始化为""当你得到" 12"作为输出。

答案 3 :(得分:0)

使用JavaScript:

function sumArray(array) {
    var sum = 0;
    for (var i = 0; i < array.length; i++) {
        sum += parseInt(array[i]);
    }
    return sum;
}
var sum = sumArray(['1', '2', 3]);

使用JavaScript Array.reduce方法:

var array = ['1', '2', 3];
var sum = array.reduce(function(a, b) { return a + parseInt(b); }, 0);