Javascript 获取嵌套对象的值

Javascript 获取嵌套对象的值,javascript,object,arraylist,Javascript,Object,Arraylist,我有以下对象,需要在其中检索“address”字段值 var south= {}; south.address = { "South Building" :{ address: "7421 New York Avenue", address2: "", city: "Georgetown", state: "DC", zip: "10221", phone:"202.555.9999",

我有以下对象,需要在其中检索“address”字段值

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"])
返回:
[“地址”、“地址2”、“城市”、“州”、“邮政编码”、“电话”、“传真”]

Object.key(south.address[“south Building”])[0]

返回:
“地址”


我想得到“address”的值。有人有什么想法吗?

您必须使用检索到的密钥:

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]);
}
var keys=Object.keys(southland.address[“SoCal Accounting”]);
对于(变量i=0;i
我要问你的真正问题是,这个物体会改变吗? 如果未更改,则可以访问地址属性,如下所示:

south.地址[“南楼”]地址

如果它确实发生了变化(我假设
“South Building”
最有可能发生变化),但总体结构是相同的,您将在这样的for循环中访问每个“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.
    }
}

真管用!不过我不需要for循环,我需要的是value变量。谢谢