下面是一个示例JSON对象:
{"Group": {"Subscriptions": [{"ZoneId": "51"},{"ZoneId": "3573"}]}}
我可以使用类似的东西为第一个索引检索特定的“ZoneId”:
obj.Group.Subscriptions[0].ZoneId
但是有可能检索所有'ZoneId'的数组吗? 例如,类似下面的内容(如果您可以想象像get-all通配符一样工作)
obj.Group.Subscriptions[*].ZoneId
是否存在这样的语法?或者是否有另一种方法来检索“订阅”中的所有“区域ID”? (可能有任意数量的ZoneIds)
我正在使用jQuery / Javascript来处理这些数据。
答案 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