Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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从数组中读取对象_Javascript_Arrays_List - Fatal编程技术网

javascript从数组中读取对象

javascript从数组中读取对象,javascript,arrays,list,Javascript,Arrays,List,如何读取de列表中玩家的姓名 let Players = [] let Player = { sprite: 1, coords: {M: 0, X: 0, Y: 0}, name: "" } function LoadPlayers(){ console.log("total players: " + Players.length) let player1 = Player player1.sprite = 0 player1.coords = {M: 0, X

如何读取de列表中玩家的姓名

let Players = []

let Player = {
    sprite: 1,
    coords: {M: 0, X: 0, Y: 0},
    name: ""
}

function LoadPlayers(){

console.log("total players: " + Players.length)

let player1 = Player
player1.sprite = 0
player1.coords = {M: 0, X: 6, Y: 1};
player1.name = "jimpie"

Players.push([player1]);



let player2 = Player         
player2.sprite = 0
player2.coords =  {M: 0, X: 1, Y: 17};
player2.name = "kolien"

Players.push([player2]);

console.log("total players: " + Players.length)

console.log("Player 1 name: " + Players[1].name)
console.log("Player 2 name: " + Players[0].name)
}

我现在“未定义”,我想从列表中的特定玩家那里读取玩家详细信息。

这是因为您没有正确创建
玩家。不要使用
let player1=Player
,而是使用
let player1=new Player()
。此外,还需要创建一个
Players
数组。最后,您需要创建一个
Player

职业玩家{
构造函数(精灵、坐标、名称){
this.sprite=精灵;
this.coords=coords;
this.name=名称;
}
}
var Players=[];//如果要访问此阵列
//从函数外部,将其保留在此处。
//否则,请在LoadPlayers函数中移动它
函数LoadPlayers(){
let player1=新玩家(0{
M:0,
X:6,
Y:1
}“jimpie”);
玩家。推(玩家1);
let player2=新玩家(0{
M:0,
X:1,
Y:17
}“kolien”)
玩家。推(玩家2);
console.log(“玩家总数:+players.length”)
console.log(“玩家1名称:+Players[0].name)
console.log(“玩家2名称:”+Players[1].name)
}

LoadPlayers()您有不同的错误

首先,您必须使用
newplayer()
,而不仅仅是
Player

第二,你应该使用这个:

Players.push(player1);
与此相反:

Players.push([player1]);
第一个将player1推送到玩家阵列,第二个将只包含player1的新阵列推送到玩家阵列。您还必须使用此选项添加player2。

谢谢@AlexH

function Player(sprite, coords, name){
    this.sprite = sprite;
    this.coords = coords;
    this.name = name;
}

let Players = []

function LoadPlayers(){

console.log("total players: " + Players.length)

let player1 = new Player(1, [32, 15, 14], "jimpie")

Players.push(player1);



let player2 = new Player(1, (1, 1, 1), "kolien")

Players.push(player2);

console.log("total players: " + Players.length)

console.log("Player 1 name: " + Players[0].coords)
console.log("Player 2 name: " + Players[1].name)

var allcoords = Players[0].coords
var xcoord = allcoords[1]
var ycoord = allcoords[2]
var mapnum = allcoords[0]

console.log("map: " + mapnum + " x: " + xcoord + " y: " + ycoord);

}

这个很好用

您的
let=Player
行中似乎缺少了一些
新的
s。您在哪里未定义?玩家是否在代码中的其他地方定义?关于Player呢?另外,您还没有实例化
Players
数组(至少不在该代码中),如果代码仍然是
Players.push([player1])
,那么代码仍然可以工作。但是,要访问播放器,可以使用
Players[i][0]
而不是
Players[i]
。此外,
player()
需要一个
新的
是的,但我认为这不是OP想要的。谢谢@AlexH!作为对“是的,但我不认为这是OP想要的”的回应:它可以走任何一条路。最好显示这两种方法并详细说明每种方法的结果,以便OP可以选择最好的方法。您需要定义一个
Player
类以使其正常工作(如果这是您的意思)抱歉,忘记输入所有代码行。在我的第一篇文章中进行了编辑。如果答案正确,请接受它(单击复选标记),以表明它解决了您的问题。这可以作为发现问题答案有效的其他人的指标。你能在问题中显示你的
Player
类的代码吗?我显示了,没有Player类。我有:let Player={sprite:1,coords:{M:0,X:0,Y:0},name:“}它在控制台中显示了两次Player 1 name:kolien,Player 2 name:kolien