理论上的问题,如果我有一个JavaScript应用程序,我有多个玩家,每个玩家将有100个计算机生成的数学问题。
在单人游戏模式中,这很容易,只为一个玩家生成问题:
var player1Qs = [];
for (i = 0; i < maxQustions; i++) {
// Generate Question Object
var question = {};
...
// Add to Array
player1Qs.push(question);
}
这没有问题。然而,当我使用与上面相同的想法添加第二个玩家时,我感到有些困惑。我试着在不使用多维数组的情况下这样做,因为我试图让它尽可能简单,但它可能是不可避免的。
所以玩家2会看起来像这样:
var player1Qs = [];
var player2Qs = [];
for (i = 0; i < playerCount; i++) {
for (j = 0; j < maxQustions; j++) {
// Generate Question Object
var question = {};
...
// Add to Array
???
}
}
有没有办法让我使用for循环动态添加到这两个数组?或者我是否需要一个包含数组的玩家,并且在这个问题的阵列中?
答案 0 :(得分:2)
这样的事情可以解决问题:
// Make sure all players exist.
var players = [];
for (var i = 0; i < playerCount; i++) {
players.push({ name: "Player " + i, questions: [] });
}
// Create questions
for (var i = 0; i < maxQuestions; i++) {
// Generate Question Object
var question = {};
// Do stuff with this question
// Assign the current question to all players.
for (var j = 0; j < playerCount; j++) {
players[j].questions.push(question);
}
}
答案 1 :(得分:0)
我试着在不使用多维数组的情况下这样做,因为我试图让它尽可能简单
我认为拥有二维数组是最简单的用例,正如您在问题中所建议的那样:
或者我是否需要一个包含数组的玩家以及一个数组 对于问题?
答案是肯定的(至少如果你想保持简单)。球员阵列将保留所有球员,然后每个球员可以有100个问题。
var maxQustions = 100;
var players= []
var player1Qs = [];
var player2Qs = [];
players.push(player1Qs);
players.push(player2Qs);
for (i = 0; i < players.length; i++) {
for (j = 0; j < maxQustions; j++) {
var question = {};
players[i].push(question);
}
}
答案 2 :(得分:-2)
按照这种方法,我假设你有动态玩家及其阵列: -
var data = {};
var player = [1,2]
var c = [1,2,3,4,5]
for(j=0;j<player.length;j++)
{
data['players'] = player;
data['questions'] = c
}
console.log(data)