2014-09-06 73 views
-1

这是我的目标看起来像在控制台:遍历一个javascript嵌套对象的JavaScript

for (var key in user_data) { 
    console.log(key); 
} 

返回“的玩家:

Object 
players: Array[5] 
    0: Object 
     user_c_x: 0 
     user_c_y: 25.1 
     username: "shuraa" 
     __proto__: Object 

    1: Object 
     user_c_x: 0 
     user_c_y: 25.1 
     username: "maarten" 
     __proto__: Object 

    2: Object 
     user_c_x: 0 
     user_c_y: 25.1 
     username: "maarten2" 
     __proto__: Object 

    3: Object 
     etc. 

我'利用试图遍历所有的对象”。我似乎无法访问'下面'的数组。

有人能帮助我访问user_c_x,user_c_y和用户名的值吗?

+0

该数组不是“下”;玩家**是阵列。要访问它,可以使用数组表示法'players [0]'或循环访问数组,就像您在学习过的教程中学到的那样,或者可以通过Google搜索“访问JavaScript中的数组元素”来找到它。 – 2014-09-06 13:29:32

回答

2

for (var key in user_data)将返回user_data中属性的名称,以便您可以使用它获取实际属性值。

你是如何循环取决于你是否知道玩家肯定是属性的名称,或者它是否可以有任何名字。

我假设你USER_DATA物体看起来像下面这样:

var user_data = { 
    players: [ 
     { 
       user_c_x: 0, 
       user_c_y: 25.1, 
       username: "shuraa" 
     }, 
     { 
       user_c_x: 0, 
       user_c_y: 25.1, 
       username: "maarten" 
     }, 
     { 
       user_c_x: 0, 
       user_c_y: 25.1, 
       username: "maarten2" 
     } 
    ] 
}; 

如果你知道的结构,可以直接访问它:

for(var playerIndex in user_data.players) 
{ 
    var player = user_data.players[playerIndex]; 
    console.log("username: ", player.username); 
} 

如果你不知道这个名字,你可以如下嵌套for循环:

for(var key in user_data) 
{ 
    for(var playerIndex in user_data[key]) 
    { 
     var player = user_data[key][playerIndex]; 
     console.log("username: ", player.username); 
    } 
} 
+0

使用问题中提供的正确对象结构的正确解决方案。 – lesssugar 2014-09-06 13:30:58

0

如果你分享你的对象,但基于控制台数据players是一个数组,它会更容易。那么,包含了var它应该是这样的:

var players =[ {user_c_x: 0, user_c_y: 25.1, username: "shuraa"}, {user_c_x: 0, user_c_y: 25.1, username: "maarten"} ]; 

因此循环扔你可以使用一个简单for(i=0;i<players.length;i+=)

for(i=0;i<players.length;i++){ 
    console.log(players[i].username); 
} 
+0

数组“玩家”存储在对象“user_data”中。我如何首先访问“user_data”?之后,你的循环应该工作 – 2014-09-06 13:20:08

+0

@MaartenHartman在上面的例子'玩家'可以用'user_data'替换 – Dalorzo 2014-09-06 13:21:42

0

的Javascript

var players =[ {user_c_x: 0, user_c_y: 25.1, username: "shuraa"}, {user_c_x: 0, user_c_y: 25.1, username: "maarten"} ] 
for (var i=0; i<players.length; i++) { 
    for(var innerObj in players[i]) 
    { 
     $("body").append(innerObj +":"+players[i][innerObj] +"<br />"); 
    } 
} 

DEMO

+0

你必须使用jQuery – 2014-09-06 13:33:52

+0

不,我用它来显示结果。 – Hamix 2014-09-06 13:35:48

+0

'innerObj'是属性名称,'players [i] [innerObj]'属性值。 – Hamix 2014-09-06 13:38:00