2017-10-09 20 views
0

私は練習としてスコアリングアプリをやっていますが、私はプレイヤーの合計得点を計算するオブジェクトを取得しようとしています。だから私は、主被写体scoreTableを持ってJavascript:Forループのforループ

totalScore: function() { 
    "use strict"; 
    debugger; 
    var sum = 0; 
    for (var i = 0; i < this.players[i].length; i++) { 
    for (var n = 0; n < this.players[i].score[n].length; n++) { 
     sum += this.players[i].score[n]; 
    } 
    this.players[i].totalScore = sum; 
    } } 

:ここで私はに苦しんだ部分があります。 playersは、scoreと呼ばれる別の配列を含むオブジェクトの配列です。だから私がしようとしているのは、配列のループを実行し、各score配列でループし、その配列の合計を見つける、totalScoreオブジェクト関数を作成することです。

理由はわかりませんが、私がdubuggerで実行すると、最初のforループに入り、最初の配列のプレーヤーを見つけて、次のループを実行せずに関数の最後までスキップします。なぜそれがそれをやっているのか分かりません。

+0

私は合計がループ内にあるはずです。 –

答えて

3
for (var i = 0; i < this.players[i].length; i++) { 
    for (var n = 0; n < this.players[i].score[n].length; n++) 
} 

これは次のようになります。

for (var i = 0; i < this.players.length; i++) { 
    for (var n = 0; n < this.players[i].score.length; n++) 
} 
+2

と次のforループtoo too score.length' – corn3lius

+0

ああ、私のような愚かな監督。ありがとうございました。 –

0

次試してみてください。

totalScore: function() { 
    for (var i = 0; i < this.players.length; i++) { 
     var player = this.players[i]; 
     player.totalScore = 0; 
     for (var n = 0; n < player.score.length; n++) { 
      player.totalScore += player.score[n]; 
     } 
    } 
} 

これは構文エラーでなく、和ロジック自体だけではないが修正されています。最初のポストからsum変数「を受賞トップレベルループ内の新しいプレイヤーごとにリセットされます。