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

ES5 のArray.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. ループは1ではなく0から始まります。

  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 functionがある場合は、次のようにするだけです。

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

ここに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

以下は、LINQ の sum メソッドに似た Number プロトタイプの拡張を使用する例です。

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

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);
}​

2 番目のパラメーターparseInt、基数 10 を使用するように指示します。

于 2012-07-27T11:21:50.153 に答える
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 ループの最初の i 値を 0 で開始する必要があります。

于 2015-11-02T17:30:31.677 に答える
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関数を使用すると、古いブラウザーで問題が発生する可能性があります (そのためのポリフィルが見つからない場合)。

于 2012-07-27T12:02:30.213 に答える