2014-09-06 72 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