[英]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.