2017-10-09 2 views
0

Je fais une application de notation comme pratique, et j'essaye d'obtenir un objet pour calculer le score total pour un joueur. Voici la partie que je me bats avec:Javascript: Pour la boucle dans une boucle 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; 
    } } 

J'ai donc un objet principal scoreTable. players est un tableau d'objets qui comprend un autre tableau appelé score. Donc ce que j'essaye de faire est de créer une fonction d'objet totalScore qui exécute une boucle à travers le tableau players qui boucle sur chaque tableau score et trouve la somme de ce tableau. Je ne sais pas pourquoi, mais quand je le lance sur le dubugger, il va dans la première boucle, trouve le premier tableau de joueurs, puis passe juste à la fin de la fonction sans lancer la boucle suivante . Je ne sais pas pourquoi c'est ce qu'il fait.

+0

Je parie que la somme doit être dans la boucle. –

Répondre

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

Cela devrait être:

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

et la prochaine pour la boucle aussi «score.length» – corn3lius

+0

Oh mec, un tel oubli de ma part. Merci pour ça. –

0

Essayez suivante:

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]; 
     } 
    } 
} 

Cela corrige non seulement les erreurs de syntaxe, mais aussi la somme logique elle-même: sum variable d'après initiale a gagné » t réinitialiser pour chaque nouveau joueur dans la boucle de niveau supérieur.