10

我需要使用 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

4

14 回答 14

26
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().

于 2012-07-27T11:21:33.210 回答
8

ES5Array.prototype.reduce方法的主要示例。像:

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

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

演示:http: //jsfiddle.net/FwfmE/

于 2012-07-27T11:26:26.170 回答
5
var nums = ['100','300','400','60','40'], 
    num = 0;

for (var i = 0; i < nums.length; i++) {
    num += +nums[i];
}
alert(num);
​
于 2012-07-27T11:23:25.720 回答
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'.

于 2012-07-27T11:23:52.167 回答
3
var num, nums = [100,300,400,60,40];

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

alert(num);
于 2012-07-27T11:21:30.107 回答
2

如果你有一个reduce 函数,你可以这样做:

var nums = ['100','300','400','60','40'],
    sum = nums.reduce(function(accum, val) {return accum + Number(val);}, 0);
alert(sum);
于 2012-07-27T11:50:23.960 回答
1

Javascript 将您的数字视为字符串,并将它们连接在一起,而不是像您期望的那样添加它们。

用于parseInt在添加之前将它们转换为整数:

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

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

第二个参数告诉parseInt使用基数 10。

于 2012-07-27T11:21:50.153 回答
1

这是JSFiddle

代码是:

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

for(var i=0; i < nums.length; i++){            
        num += parseInt(nums[i]);  
}
  alert(num);
于 2012-07-27T11:27:37.093 回答
1
var i, sum = 0, nums = ['100','300','400','60','40'];

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

alet(sum);

您不应该var在循环中使用该语句。此外parseInt,其他答案中使用的函数将始终将数字转换为整数,因此它不适用于浮点数。为数字加上前缀+会将它们转换为数字。

如果您为浏览器开发,使用该reduce功能可能会导致旧浏览器出现问题 - 除非您找到它的 polyfill。

于 2012-07-27T12:02:30.213 回答
1
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 值。

于 2015-11-02T17:30:31.677 回答
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();
于 2015-11-02T17:44:01.327 回答
1

你可以做这样的事情..

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

nums.reduceRight(function(a,b){return Number(a)+Number(b);})
于 2016-10-05T06:33:32.600 回答
1
var nums = ['100','300','400','60','40'];
let sum =0;
    for(let numbers of nums){
 sum+=parseInt(numbers);
     }
alert(sum);
于 2021-07-02T21:05:14.077 回答
0

你可以试试这个:

var arr = ['100','300','400','60','40'];
var total = 0; 
for(var i in arr){
  total += parseInt(arr[i]);
}

console.log(total);

输出将是:900

或者如果 value 是 Fl​​oat,那么试试这个:

var arr = [100.00,300.50,400.75,60.00,40.00];
    var total = 0; 
    for(var i in arr){
      total += parseFloat(arr[i]);
    }
    
    console.log(total.toFixed(2));

输出将是:901.25

于 2020-09-16T06:30:24.547 回答