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