arr = ["1","2"];
$.each(arr,function(i,obj){
sum += parseInt(obj);
});
console.log(sum);
我希望总和为3但结果为12?我以为parseInt已经完成了这项工作?这有什么不对?
答案 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);