javascript - HTML JS 组装数组名称工作正常但随后打印为 "string"而不是实际作业

标签 javascript arrays

我正在为一款机器人游戏做一些初步编码。

我用 JavaScript 编写了一个简短的程序来跟踪游戏中的回合和玩家。 我可以更新轮次,返回轮到谁没问题。

我想使用数组来保存有关玩家的信息。我正在学习,所以现在我使用的是只有 2 个元素的数组。

名字有player1_data,player2_data等,我想找出数组元素0的内容,所以变成player1_data[0],这样就可以了。

如果我输入这个,一切都很好,我的元素会返回给我。

但是,如果我通过“player”+ current_player +“_data[”+ element +“]”组合数组信息,那么它看起来不错,但根本不起作用。

它只是一串字符,而不是我手动输入时得到的实际数组元素请求!

问题是什么?

<!DOCTYPE HTML>
<html>
  <head>
  </head>
  <body>
    <button class="button" onclick="vardisplay(), updateturn() ">SHOW VARIABLES</button>


    <p id="para1">false</p>
    <p id="para2">2</p>
    <p id="para3">2</p>
    <p id="para4">2</p>
    <p id="para5">2</p>
    <p id="para6">2</p>
    <p id="para7">2</p>
    <p id="para8">2</p>

    <script>

      var ifselect = 0
      var current_turn = 0
      var last_turn = 0
      var players_in_game = 5
      var current_player = 1

      var current_robot = 123
      var player_id = "player" + current_player + "_data";

      var arrayselector = 0
      var player_array_display = player_id + "[" + arrayselector + "]";

      var player1_data = ["dave", current_robot];
      var player2_data = ["kim", current_robot];
      var player3_data = ["nigel", current_robot];
      var player4_data = ["bob", current_robot];

      function updateturn() {

        if (current_player > players_in_game - 1) {
          current_player = 1
          current_turn = current_turn + 1

        } else {
          current_player = current_player + 1;
          player_id = "player" + current_player + "_data";
          player_array_display = player_id + "[" + arrayselector + "]";
        }
      }

      function vardisplay() {

        document.getElementById("para1").innerHTML = "random stuff";
        document.getElementById("para2").innerHTML = "players_in_game:     " + players_in_game;
        document.getElementById("para3").innerHTML = "current_turn:     " + current_turn;
        document.getElementById("para4").innerHTML = "current_player:  " + current_player;
        document.getElementById("para5").innerHTML = "current_robot:     " + current_robot;
        document.getElementById("para6").innerHTML = "player_id:    " + player_id;
        document.getElementById("para7").innerHTML = "player_array_display:     " + player_array_display;
        document.getElementById("para8").innerHTML = player2_data[0];

      }


    </script>
  </body>
</html>

最佳答案

I want to use arrays to hold info about players. Im learning at the moment so for now I'm using an array with only 2 elements. The names are player1_data, player2_data etc.

不要这样做。不是对关系基于命名约定的类似命名的变量进行分组,而是使用语言提供的集合对进行分组。

var player_data_for_all_players = [player1_data, player2_data];

将允许你做

player_data_for_all_players[player_index][array_selector]

var player_data_by_name = {
  'dave': current_robot,
  ...
};

它允许您使用在调试控制台中更容易解释的(唯一)值来识别玩家。

关于javascript - HTML JS 组装数组名称工作正常但随后打印为 "string"而不是实际作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430758/

相关文章:

javascript - 为什么 null==undefined 在 javascript 中是真的

javascript - 如何将数组附加到 Jqplot 中的图例?

php - 显示 X 元素后插入新的表格行

php - 将元素插入数组的顺序位置?

java - JAVA 对 2D int 数组进行排序

javascript - 带星号的负前瞻如何工作?

javascript - 在 JavaScript 中多次重复一个字符串

javascript - 将 Json 对象数组转换为 angularjs 中的属性值列表

javascript - 我如何在 jquery 中创建一个数组?

C++ 如何加密字节数组?