代码之家  ›  专栏  ›  技术社区  ›  user9074131

如何在javascript数组中存储元素?

  •  1
  • user9074131  · 技术社区  · 8 年前

    我正在尝试构建一个纸牌游戏,其中两名玩家随机获得纸牌,获得最多纸牌的一人获胜。

    我尝试将生成的随机数放入数组。这里的问题是,新的数字应该添加到数组中,但它会使数组变空。谁能帮帮我吗。

     var varCounter = 1;
        var refVar = setInterval(function() {
        
          if (varCounter <= 4) {
        
            var randomnumber = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
            var player1 = [];
            player1.push(randomnumber);
        
            for (var i = 0; i < player1.length; i++) {
              document.write("<br>");
              document.write("player1 " + i + "card");
              document.write("<br>");
              document.write(player1[i]);
        
            }
            varCounter++;
          } else if (varCounter >= 5 && varCounter <= 8) {
            var randomnumber2 = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
            var player2 = [];
            player2.push(randomnumber2);
            for (var i = 0; i < player2.length; i++) {
              document.write("<br>");
              document.write("player2 " + i + "card");
              document.write("<br>");
              document.write(player2[i]);
            }
            varCounter++;
          } else {
            clearInterval(refVar);
          }
        }, 100);

    预期输出:

    player1 1card
    9
    player1 2card
    12
    player1 3card
    4
    player1 4card
    12
    player2 1card
    5
    player2 2card
    7
    player2 3card
    9
    player2 4card
    2 
    

    电流输出:

    player1 0card
    9
    player1 0card
    12
    player1 0card
    4
    player1 0card
    12
    player2 0card
    5
    player2 0card
    7
    player2 0card
    9
    player2 0card
    2
    
    3 回复  |  直到 8 年前
        1
  •  1
  •   corv    8 年前

    正如对你问题的评论所指出的那样,你的数组 player1 player2 每次迭代计数器时都会被覆盖,因为它包含在迭代中,如果您想在每次迭代中都写些东西,我建议您 for 循环如下:

    if (varCounter <= 4) {
      var randomnumber = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
      var player1 = [];
      player1.push(randomnumber);
    
      document.write("<br>");
      document.write("player1 " + varCounter + "card"); // varCounter becomes your 1 2 3 4card
      document.write("<br>");
      document.write(player1);
    
      varCounter++;
    }
    

    或探索 while 循环如下: https://codepen.io/corviday/pen/pdMyEw?editors=1010

    希望这有帮助!

        2
  •  1
  •   ionizer    8 年前

    这就是我最终想到的。

    var varCounter = 0;
    var player1 = [];
    var player2 = [];
    var refVar = setInterval(function() {
      if (varCounter <= 3) {
        var randomnumber = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
    
        player1.push(randomnumber);
        var i = varCounter % 4;
        for (i; i < player1.length; i++) {
    
          document.write("<br>");
          document.write("player1 " + (i + 1) + "card");
          document.write("<br>");
          document.write(player1[i]);
    
        }
        varCounter++;
      } else if (varCounter >= 4 && varCounter <= 7) {
        var randomnumber2 = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
    
        player2.push(randomnumber2);
        var i = varCounter % 4;
        for (i; i < player2.length; i++) {
    
          document.write("<br>");
          document.write("player2 " + (i + 1) + "card");
          document.write("<br>");
          document.write(player2[i]);
    
        }
        varCounter++;
      } else {
        clearInterval(refVar);
      }
    }, 100)
        3
  •  0
  •   ionizer    8 年前

    如果您只需要所需的输出,请尝试此操作。我改变了 varCounter -相关代码,以便与 可变计数器 模数 % 很好,并使其成为可运行的代码段。

    var varCounter = 0;
    var refVar = setInterval(function() {
    
      if (varCounter < 4) {
        var randomnumber = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
        var player1 = [];
        player1.push(randomnumber);
    
        for (var i = 0; i < player1.length; i++) {
          document.write("<br>");
          document.write("player1 " + (varCounter%4+1) + "card");
          document.write("<br>");
          document.write(player1[i]);
    
        }
        varCounter++;
      } else if (varCounter >= 4 && varCounter < 8) {
        var randomnumber2 = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
        var player2 = [];
        player2.push(randomnumber2);
        for (var i = 0; i < player2.length; i++) {
          document.write("<br>");
          document.write("player2 " + (varCounter%4+1) + "card");
          document.write("<br>");
          document.write(player2[i]);
        }
        varCounter++;
      } else {
        clearInterval(refVar);
      }
    }, 100);

    或者,如果你真的想要用卡片值填充数组的结果,(编辑:删除 for 循环,添加到 对于 再次循环以检查阵列内容)

    var varCounter = 0;
    
    var player1 = [];
    var player2 = [];
    
    var refVar = setInterval(function() {
    
      if (varCounter < 4) {
        var randomnumber = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
        player1.push(randomnumber);
    
        document.write("<br>");
        document.write("player1 " + (varCounter%4+1) + "card");
        document.write("<br>");
        document.write(player1[varCounter%4] + " "); //Removed for loop
    
        varCounter++;
      } else if (varCounter >= 4 && varCounter < 8) {
        var randomnumber2 = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
        player2.push(randomnumber2);
    
        document.write("<br>");
        document.write("player2 " + (varCounter%4+1) + "card");
        document.write("<br>");
        document.write(player2[varCounter%4] + " "); //Removed for loop
    
        varCounter++;
      } else {
        clearInterval(refVar);
      }
    }, 100);

    编辑: OP的最终答案:

    var varCounter = 0;
    var player1 = [];
    var player2 = [];
    var refVar = setInterval(function() {
      if (varCounter <= 3) {
        var randomnumber = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
    
        player1.push(randomnumber);
        var i = varCounter % 4;
        for (i; i < player1.length; i++) {
    
          document.write("<br>");
          document.write("player1 " + (i + 1) + "card");
          document.write("<br>");
          document.write(player1[i]);
    
        }
        varCounter++;
      } else if (varCounter >= 4 && varCounter <= 7) {
        var randomnumber2 = Math.floor(Math.random() * (13 - 1 + 1)) + 1;
    
        player2.push(randomnumber2);
        var i = varCounter % 4;
        for (i; i < player2.length; i++) {
    
          document.write("<br>");
          document.write("player2 " + (i + 1) + "card");
          document.write("<br>");
          document.write(player2[i]);
    
        }
        varCounter++;
      } else {
        clearInterval(refVar);
      }
    }, 100)