Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML JS集合数组名工作正常,但随后会打印为;“字符串”;而不是实际的工作_Javascript_Arrays - Fatal编程技术网

Javascript HTML JS集合数组名工作正常,但随后会打印为;“字符串”;而不是实际的工作

Javascript HTML JS集合数组名工作正常,但随后会打印为;“字符串”;而不是实际的工作,javascript,arrays,Javascript,Arrays,我正在为一个机器人游戏做一些前期编码 我已经用JavaScript编写了一个简短的程序来跟踪游戏中的回合和玩家。 我可以更新回合,返回谁的回合没有问题 我想用数组来保存玩家的信息。我现在正在学习,所以现在我使用一个只有2个元素的数组 名称是player1_data,player2_data,等等。我想找出数组元素0的内容,因此它变成player1_data[0],这很好 如果我输入这个,一切都很好,我得到我的元素返回给我 但是,如果我通过“player”+当前的_player+“_data[“+

我正在为一个机器人游戏做一些前期编码

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

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

名称是
player1_data
player2_data
,等等。我想找出数组元素0的内容,因此它变成player1_data[0],这很好

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

但是,如果我通过“player”+当前的_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>

显示变量

错误

2

2

2

2

2

2

2

变量ifselect=0 无功电流_匝=0 var last_turn=0 var玩家在游戏中=5 var当前_播放器=1 var电流=123 var player_id=“player”+当前_player+“_数据”; var arrayselector=0 var player_array_display=player_id+“[”+arrayselector+“]”; var player1_data=[“dave”,当前_机器人]; var player2_data=[“kim”,当前_机器人]; var player3_data=[“奈杰尔”,当前_机器人]; var player4_data=[“bob”,当前_机器人]; 函数updateturn(){ 如果(当前玩家>游戏中的玩家-1){ 当前玩家=1 当前匝数=当前匝数+1 }否则{ 当前玩家=当前玩家+1; 玩家id=“玩家”+当前玩家+“\u数据”; player_array_display=player_id+“[”+arrayselector+“]”; } } 函数vardisplay(){ document.getElementById(“para1”).innerHTML=“random stuff”; document.getElementById(“para2”).innerHTML=“玩家在游戏中:”+players在游戏中; document.getElementById(“para3”).innerHTML=“当前回合:”+当前回合; document.getElementById(“para4”).innerHTML=“当前玩家:”+当前玩家; document.getElementById(“para5”).innerHTML=“当前机器人:”+当前机器人; document.getElementById(“para6”).innerHTML=“玩家id:”+玩家id; document.getElementById(“para7”).innerHTML=“播放器数组显示:”+player数组显示; document.getElementById(“para8”).innerHTML=player2_数据[0]; }
您需要一个数组的数组。像这样:

var players_data = [];
players_data[1] = ["dave",current_robot];
players_data[2] = ["kim",current_robot];
players_data[3] = ["nigel",current_robot];
players_data[4] = ["bob",current_robot];
现在,如果要显示第二个播放机的信息,只需执行以下操作:

var name = players_data[2][0]
但最好使用对象数组来获得更“可读”的代码:

我想用数组来保存玩家的信息。我现在正在学习,所以现在我使用的数组只有2个元素。名称为player1\u数据、player2\u数据等

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

var player_data_for_all_players = [player1_data, player2_data];
将允许您这样做

player_data_for_all_players[player_index][array_selector]


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

我应该说,段落“para8”只是显示了它的工作原理。
para8
显示了
kim
的值,这是正确的
para7
您在此行中指定的值:`player\u array\u display=player\u id+“[”+arrayselector+“]”。啊哈!太好了,谢谢你的帮助。我在家自学,虽然这很简单,但有些地方很棘手。我仍然很难把数据拿回来。上面一行写着players_data[1]={如何在[1]所在的位置插入变量,以便获取players_data[current number player]。name只需将
1
替换为您的变量:
players_data[current\u number]。name
player_data_for_all_players[player_index][array_selector]
var player_data_by_name = {
  'dave': current_robot,
  ...
};