matsutoba’s blog

フロントエンドエンジニアをしています

lodashでグループごとの集計をしたい

JavaScriptでgroupBy集計をしたいのですが、意外とシンプルな例が見つからなかったのでメモしておきたいと思います。

let data = [
    {
        date: '2020-01-03',
        gender: '男'
    },
    {
        date: '2020-01-01',
        gender: '男'
    }, {
        date: '2020-01-01',
        gender: '女'
    }, {
        date: '2020-01-02',
        gender: '男'
    },{
        date: '2020-01-03',
        gender: '男'
    },
 
];
 
let summed = _.chain(data)
.sortBy('date')
.groupBy('date')
.map((objs, key) => {
    return {
        'date': key,
        'count': _.sum([objs.length])
    }
})
.value();

結果

Array (3 items)
0: Object {count: 2, date: "2020-01-01"}
1: Object {count: 1, date: "2020-01-02"}
2: Object {count: 2, date: "2020-01-03"}