在JavaScript的for循环中添加数字

13
我需要使用JavaScript将for循环中所有的数字相加。
var nums = ['100','300','400','60','40'];

for(var i=1; i < nums.length; i++){

        var num = nums[i] + nums[i];

        alert(num);
}​

有人能帮忙看一下这个链接:http://jsfiddle.net/GYpd2/1/

我想要的结果是900。


1
你目前正在将每个字符串与其自身连接,并将结果分配给 num。我建议阅读 MDN JavaScript指南 以学习基础知识。 - Felix Kling
14个回答

28
var nums = ['100','300','400','60','40'];
var sum = 0;

for(var i=0; i < nums.length; i++){

    sum += parseInt(nums[i]);

}

alert(sum);

测试结果: http://jsfiddle.net/GYpd2/6/ (感谢user1503606)

如果nums只包含数字,则不需要使用parseInt()


8

这是 ES5 的 Array.prototype.reduce 方法的一个典型示例。例如:

var nums  = ['100','300','400','60','40'];

var total = nums.reduce(function(a,b) {
    return (+a)+(+b);
});

Demo: http://jsfiddle.net/FwfmE/


5
var nums = ['100','300','400','60','40'], 
    num = 0;

for (var i = 0; i < nums.length; i++) {
    num += +nums[i];
}
alert(num);
​

@SnowBlind,你在开玩笑吗? :) - Vitalii Petrychuk
抱歉,我的错。但是 nums[i]; 左边的 + 是什么意思? - Snow Blind
1
这是一元运算符,它用于将字符串转换为整数。 - Vitalii Petrychuk

4

这样做:

var nums = ['100','300','400','60','40'];
var total = 0;    

for(var i=0; i < nums.length; i++){
    total = total + Number(nums[i]);
}
alert(total);
  1. 循环从0开始而不是1。

  2. 在循环之前声明total变量,否则它将无法保留上次的加法结果。

  3. 使用Number()将字符串转换为数字。

  4. 添加字符串意味着连接,'100'+'200'会得到'100200'


3
var num, nums = [100,300,400,60,40];

for ( var i=1; i < nums.length; i++ ) {
    num += nums[i];
}​

alert(num);

2
var nums = ['100','300','400','60','40'];
var num = 0; 

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

这是我的做法。它与其他人的代码非常相似,但写法不同。你需要在for循环中以0作为初始i值。

太好了!这是唯一有效的解决方案。 - Nobody
太好了!这是唯一有效的解决方案。 - undefined

2
如果您有一个reduce函数,您可以这样做:
var nums = ['100','300','400','60','40'],
    sum = nums.reduce(function(accum, val) {return accum + Number(val);}, 0);
alert(sum);

1
这是一个示例,它使用了Number原型的扩展,类似于LINQ的sum方法:
Array.prototype.sum = function () {
  var result = 0;
  this.forEach(function (o) { result += Number(o); });
  return result;
};

var sum = ['100','300','400','60','40'].sum();

1
你可以像这样做...
var nums = ['100','300','400','60','40'];

nums.reduceRight(function(a,b){return Number(a)+Number(b);})

1
var nums = ['100','300','400','60','40'];
let sum =0;
    for(let numbers of nums){
 sum+=parseInt(numbers);
     }
alert(sum);

欢迎来到Stack Overflow!仅有代码的答案并不特别有帮助。请添加一些描述,说明这段代码如何解决问题。 - Sven Eberth
对于数组,使用 for...of 循环来计算数组中所有变量的总和要容易得多。你只需要声明一个变量并将其值设置为 0。然后使用 for...of 循环遍历数组并返回总和即可。 - Faveren Caleb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接