簡體   English   中英

JavaScript對象結構:如何使用“ complex.key”訪問內部字段

[英]JavaScript object structure: how to access inner field with 'complex.key'

給定這樣的對象:

var obj = {
"name":"JonDoe",
"gender":"1",
"address":{
    "phone":"1"
    }
}

我知道你可以有這樣的事情:

    console.log(obj['name']); // returns 'JonDoe'

我的問題來自內部結構“地址”,我想使用obj['address.phone']定位其“電話”內部字段,但它返回的是undefined ,其中所有級別1字段均返回匹配值。

我很確定您可以使用一些(反)序列化函數或任何json庫來做到這一點,但是我想知道是否存在一種聰明的方式來列出所有內部結構(如“地址”) ,而無需我初步了解哪個字段目標 (例如obj [field])。

做:

var phone = obj.address.phone;

使用變量作為屬性名稱時,通常使用括號表示法。 如果您知道屬性,請隨時使用點符號(如上所示)

您可以嘗試以下方法:

var addresses = [];

for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
        addresses.push(obj[key]['address']);
    }
}

console.log(addresses);

對於更復雜的對象屬性查詢,請使用此庫linq.js-LINQ for JavaScript

更新

如果要列出所有地址電話,無論它們的深度如何,請嘗試遞歸掃描:

var phones = [];

var scan = function(obj) {
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            if (key == 'address') {
                phones.push(obj[key]['phone']);
            }
            else if (typeof obj[key] === 'object') {
                scan(obj[key]);
            }
        }
    }
};

scan(obj)
console.log(phones);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM