Javascript 检索JSON中的所有项,而不仅仅是索引
下面是一个JSON对象示例:Javascript 检索JSON中的所有项,而不仅仅是索引,javascript,jquery,Javascript,Jquery,下面是一个JSON对象示例: {"Group": {"Subscriptions": [{"ZoneId": "51"},{"ZoneId": "3573"}]}} 对于第一个索引,我可以使用如下内容检索特定的“ZoneId”: obj.Group.Subscriptions[0].ZoneId 但是有可能检索所有“ZoneId”的数组吗? 例如,类似于以下内容(如果您可以想象像get all通配符一样工作) 这种语法存在吗?或者是否有其他方法检索“订阅”中的所有“区域ID”? (可以有任意
{"Group": {"Subscriptions": [{"ZoneId": "51"},{"ZoneId": "3573"}]}}
对于第一个索引,我可以使用如下内容检索特定的“ZoneId”:
obj.Group.Subscriptions[0].ZoneId
但是有可能检索所有“ZoneId”的数组吗?
例如,类似于以下内容(如果您可以想象像get all通配符一样工作)
这种语法存在吗?或者是否有其他方法检索“订阅”中的所有“区域ID”?
(可以有任意数量的ZoneID)
我正在使用jQuery/Javascript处理这些数据。您可以使用
map
提取您需要的内容
obj.Group.Subscriptions.map(function(x){return x.ZoneId});
//^ ["51", "3573"]
这也被称为“拔毛”,你可以这样做:
_.pluck(obj.Group.Subscriptions, 'ZoneId');
如果您也在使用库,则可以使用如下功能:
_.pluck(obj.Group.Subscriptions, 'ZoneId');
var obj =
{
"Group": {
"Subscriptions": [{"ZoneId": "51"}, {"ZoneId": "3573" }],
"GetAllSubscriptions": function() {
return this.Subscriptions.map(function(item){ return item.ZoneId; });
}
}
}
在你的情况下会给你什么
["51", "3573"]
像这样的怎么样:
_.pluck(obj.Group.Subscriptions, 'ZoneId');
var obj =
{
"Group": {
"Subscriptions": [{"ZoneId": "51"}, {"ZoneId": "3573" }],
"GetAllSubscriptions": function() {
return this.Subscriptions.map(function(item){ return item.ZoneId; });
}
}
}
然后
obj.Group.GetAllSubscriptions()
如果您需要在早于IE9的浏览器上运行,则需要polyfill:
JSON只是文本。问题在于如何处理JavaScript对象,而不是文本。请注意,如果必须支持IE8(甚至更低版本),则不支持
Array.prototype.map
)。因此,使用下划线是安全的选择(而且它是一个很好的库)。