I need your support to make a groupby in Ramda.
I have a data and I require:
- Sort the data by its type of service
- Separate those that are the same product code
- Make the groupby of duration
- Make the merge of all the data
Data:
[{
'id': '1', 'serviceType': { 'description': 'GE' },
'productCode': 'codeTwo', 'duration': { 'months': 24 },
}, {
'id': '2', 'serviceType': { 'description': 'GE' },
'productCode': 'codeOne', 'duration': { 'months': 12 }
}, {
'id': '3', 'serviceType': { 'description': 'RF' },
'productCode': 'codeOne', 'duration': { 'months': 24 },
}, {
'id': '4', 'serviceType': { 'description': 'RF' },
'productCode': 'codeOne', 'duration': { 'months': 12 },
}, {
'id': '5', 'serviceType': { 'description': 'RF' },
'productCode': 'codeOne', 'duration': { 'months': 36 },
}, {
'id': '6', 'serviceType': { 'description': 'GE' },
'productCode': 'codeOne', 'duration': { 'months': 24 }
}]
Result expected:
[{
'serviceType': 'GE',
'productCode': 'codeOne',
'duration': [12,24]
}, {
'serviceType': 'RF',
'productCode': 'codeOne',
'duration': [12,24,36]
}, {
'serviceType': 'GE',
'productCode': 'codeTwo',
'duration': [24]
}]
Testing with error:
data.map(item => {
(item.serviceType === 'GE') ? listGE.push(item) : listRF.push(item)
R.compose(
R.values,
R.map(R.head),
R.map(R.prop('duration')),
R.groupBy(m => m.id !== id ? m.id : m.id)
)(listGE)
console.log(listGE);
})
listGE