使用For循环将相同的信息推送到两个阵列

时间:2017-01-27 09:54:47

标签: javascript arrays

理论上的问题,如果我有一个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循环动态添加到这两个数组?或者我是否需要一个包含数组的玩家,并且在这个问题的阵列中?

3 个答案:

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