I'm trying to group the following array with objects:
[ { user_id: 301, alert_id: 199, deal_id: 32243 },
{ user_id: 301, alert_id: 200, deal_id: 32243 },
{ user_id: 301, alert_id: 200, deal_id: 107293 },
{ user_id: 301, alert_id: 200, deal_id: 277470 } ]
As you can see it contains user_id and alert_id combinations, which I like to group. So I would like to have the following array:
[ { user_id: 301, alert_id: 199, deals: [32243] },
{ user_id: 301, alert_id: 200, deals: [32243,107293,277470]}]
Anyone knows a solution for this? With underscore's GroupBy I can group the values based on one key. But I need to group them, based on the combination user_id AND alert_id, as you can see.
I took a look at underscore.nest, but the problem is it creates its own keys.
Use groupBy with a function that creates a composite key using user_id and alert_id. Then map across the groupings to get what you want:
I would like to contribute a neat typescript ES6 group by.
I am not really sure how to tighten up the return value typing. Some trickery is needed there, but this works rather well for me.
You will need to turn on the typescript compiler option
"downlevelIteration": true
to allow thenew Map
to iterate and returnvalues()
.