繁体   English   中英

当键是字符串数组时使用lodash groupby

[英]Using lodash groupby when your key is an array of strings

假设我有一个像这样的对象:

var cars = [{
    make: 'audi',
    model: 'r8',
    year: ['2011', '2012']
}, {
    make: 'audi',
    model: 'rs5',
    year: ['2011,', '2013']
}, {
    make: 'ford',
    model: 'mustang',
    year: ['2012', '2013']
}, {
    make: 'ford',
    model: 'fusion',
    year: ['2012', '2015']
}];

我想创建按年份分组的汽车对象。

就像..

 var cars = [{
        2012: [
            { make: 'audi', model: 'r8' },
            { make: 'ford', model: 'mustang' },
            { make: 'ford', model: 'fusion' }
        ],
        2013: [{ make: 'audi', model: 'rs5' }, { make: 'ford', model: 'mustang' }]
etc..    
}]

如何使用lodash轻松做到这一点? groupBy只是按数组对字符串进行分组。 似乎首先需要一个map函数。

基本上,解包(“线性化”)列表,然后应用groupBy

result = _(cars)
    .flatMap(car => car.year.map(
        year => _.assign({}, car, {year})
    ))
    .groupBy('year')
    .value()

但是,这保留了年份字段,不知道这是否是一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM