Javascript:For循环中的循环

时间:2017-10-09 18:28:19

标签: javascript arrays for-loop

我正在做一个得分应用作为练习,我试图让一个对象来计算一个玩家的总得分。以下是我挣扎的部分:

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

所以我有一个主要对象scoreTableplayers是一个对象数组,其中包含另一个名为score的数组。所以我要做的就是创建一个totalScore对象函数,它运行循环遍历每个players数组的score数组,并找到该数组的总和。

我不知道为什么,但是当我在dubugger上执行它时,它进入第一个for循环,找到第一个玩家阵列,然后跳到函数的末尾而不运行下一个环。我不知道为什么要这样做。

2 个答案:

答案 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++) 
}

答案 1 :(得分: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-logic本身:sum变量,从最初的帖子赢得了顶级循环中每个新玩家的重置。