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

时间:2014-05-08 00:09:36

标签: javascript jquery

下面是一个示例JSON对象:

{"Group": {"Subscriptions": [{"ZoneId": "51"},{"ZoneId": "3573"}]}}

我可以使用类似的东西为第一个索引检索特定的“ZoneId”:

obj.Group.Subscriptions[0].ZoneId

但是有可能检索所有'ZoneId'的数组吗? 例如,类似下面的内容(如果您可以想象像get-all通配符一样工作)

obj.Group.Subscriptions[*].ZoneId

是否存在这样的语法?或者是否有另一种方法来检索“订阅”中的所有“区域ID”? (可能有任意数量的ZoneIds)

我正在使用jQuery / Javascript来处理这些数据。

3 个答案:

答案 0 :(得分:2)

您可以使用map来提取所需内容。

obj.Group.Subscriptions.map(function(x){return x.ZoneId});
//^ ["51", "3573"]

这也称为"采用",Underscore你可以这样做:

_.pluck(obj.Group.Subscriptions, 'ZoneId');

答案 1 :(得分:0)

如果您还使用UnderscoreJS库,则可以使用pluck这样的功能:

_.pluck(obj.Group.Subscriptions, 'ZoneId');

在你的情况下会给你

["51", "3573"]

答案 2 :(得分:0)

这样的事情怎么样:

var obj = 
{
    "Group": {
        "Subscriptions": [{"ZoneId": "51"}, {"ZoneId": "3573" }], 
        "GetAllSubscriptions": function() { 
            return this.Subscriptions.map(function(item){ return item.ZoneId; });  
        } 
    }
}

然后

obj.Group.GetAllSubscriptions()

如果您需要在早于IE9的浏览器上运行,则需要填充:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map