Javascript 检索JSON中的所有项,而不仅仅是索引

Javascript 检索JSON中的所有项,而不仅仅是索引,javascript,jquery,Javascript,Jquery,下面是一个JSON对象示例: {"Group": {"Subscriptions": [{"ZoneId": "51"},{"ZoneId": "3573"}]}} 对于第一个索引,我可以使用如下内容检索特定的“ZoneId”: obj.Group.Subscriptions[0].ZoneId 但是有可能检索所有“ZoneId”的数组吗? 例如,类似于以下内容(如果您可以想象像get all通配符一样工作) 这种语法存在吗?或者是否有其他方法检索“订阅”中的所有“区域ID”? (可以有任意

下面是一个JSON对象示例:

{"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
)。因此,使用下划线是安全的选择(而且它是一个很好的库)。