2013-07-12 50 views
1

我有以下需要檢索「地址」字段值的對象。獲取嵌套對象的值

var south= {}; 
south.address = { 
    "South Building" :{ 
     address: "7421 New York Avenue", 
     address2: "", 
     city: "Georgetown", 
     state: "DC", 
     zip: "10221", 
     phone:"202.555.9999", 
     fax: "202.555.6696" 
    } 
}; 

我目前唯一可以得到的字段的名稱用:

Object.keys(south.address["South Building"]) 

返回:["address", "address2", "city", "state", "zip", "phone", "fax"]

Object.keys(south.address["South Building"])[0]

返回:"address"

我想要獲得「地址」的價值。任何人有任何想法?

回答

0

你必須使用你拿到了鑰匙:

var key = Object.keys(southland.address["SoCal Accounting"])[0]; 
var value = southland.address["SoCal Accounting"][key]; 

併爲您的鑰匙的數組:

var keys = Object.keys(southland.address["SoCal Accounting"]); 
for(var i = 0; i < keys.length; i++) { 
    var key = keys[i]; 
    console.log(southland.address["SoCal Accounting"][key]); 
} 
+0

這是行得通!雖然我不需要for循環,但值變量就是我所需要的。謝謝!!!! – TutTut

0

真正的問題我對你是做該對象的變化? 如果它不改變你可以訪問該地址屬性爲這樣:

south.address["South Building"].address

如果它不改變(我假設"South Building"是最有可能改變),但整體結構是一樣的,你會在訪問每個「建設」的地址循環這樣

for(var building in south.address){ 
    var address = south.address[building].address; 
    //do what you want with address here. 
} 

如果事實上的內部對象的結構發生變化(即address不是gauranteed屬性),那麼如果它存在就像你仍然可以訪問它這個:

for(var building in south.address){ 
    if("address" in south.address[building]){ 
     var address = south.address[building].address; 
     //do what you want with address here. 
    } 
}