使用lodash,我想采用多个密钥对的多个集合,并使用特定的密钥对返回集合。
输入JSON:
var rawCollection = [
{
"city": "Antwerp",
"region": "Europe",
"spanish_city_name": "Amberes",
"title": "Antwerp"
},
{
"city": "Antwerp",
"region": "NA",
"spanish_city_name": "Amberes",
"title": "Antwerp"
},
{
"city": "Antwerp",
"region": "SA",
"spanish_city_name": "Amberes",
"title": "Antwerp"
}
期望的输出:
[{
"region": "Europe",
},
{
"region": "NA",
},
{
"region": "SA"
}]
我尝试了_uniq(rawCollection, 'region')
,_filter
和其他一些功能
答案 0 :(得分:3)
使用_.pluck
:
var regions = _.pluck(rawCollection , 'region');
这将为您提供一组区域名称(字符串数组),而不是对象的数组。像这样:
[ 'Europe', 'NA', 'SA' ]
拥有一堆具有单个字段的对象似乎很浪费。但是,如果你想要一个像你问题中那样的对象数组,那么就可以了:
var regions = _.map(rawCollection, _.partialRight(_.pick, 'region'));
使用partialRight
可以缩写代码。它相当于:
var regions = _.map(rawCollection , function (x) {
return _.pick(x, 'region');
});
map
次来电都会返回:
[ { region: 'Europe' }, { region: 'NA' }, { region: 'SA' } ]
答案 1 :(得分:1)
尝试_.pluck
var regions = _.pluck(rawCollection , 'region');