我正在做一个得分应用作为练习,我试图让一个对象来计算一个玩家的总得分。以下是我挣扎的部分:
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;
} }
所以我有一个主要对象scoreTable
。 players
是一个对象数组,其中包含另一个名为score
的数组。所以我要做的就是创建一个totalScore
对象函数,它运行循环遍历每个players
数组的score
数组,并找到该数组的总和。
我不知道为什么,但是当我在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++)
}
答案 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
变量,从最初的帖子赢得了顶级循环中每个新玩家的重置。