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"

我想获得“地址”的值。有人有什么想法吗?

4

2 回答 2

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]);
}
于 2013-07-12T16:09:18.847 回答
0

我要问你的真正问题是那个对象会改变吗?如果它没有改变,您可以像这样访问地址属性:

south.address["South Building"].address

如果它确实发生了变化(我认为"South Building"最有可能发生变化)但整体结构是相同的,您将在这样的 for 循环中访问每个“建筑物”的地址

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

如果实际上内部对象的结构发生了变化(即address不是保证属性),那么如果它像这样存在,您仍然可以访问它:

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.
    }
}
于 2013-07-12T16:29:47.700 回答