Dale Spiteri
Dale Spiteri

Reputation: 817

Javascript: For loop in a for loop

I'm doing a scoring app as practice, and I'm trying to get an object to calculate the total score for a player. Here is the part I'm struggling with:

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

So I have a main object scoreTable. players is an array of objects which includes another array called score. So what I'm trying to do is create a totalScore object function that runs a loop through the players array that loops on each score array and finds the sum of that array.

I don't know why, but when I run through it on the dubugger, it goes into the first for loop, finds the first array of players, then just skips to the end of the function without running the next loop. I'm not sure why it's doing that.

Upvotes: 0

Views: 459

Answers (2)

dhilt
dhilt

Reputation: 20744

Try following:

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

This fixes not only syntax errors, but also the sum-logic itself: sum variable from initial post won't reset for each new player in the top-level loop.

Upvotes: 0

Kenji Mukai
Kenji Mukai

Reputation: 599

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

This should be:

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

Upvotes: 3

Related Questions