如何仅使用一个特定密钥对返回多个集合?

时间:2014-04-02 23:30:02

标签: javascript lodash

使用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和其他一些功能

2 个答案:

答案 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');