const records = {
"moduleResults": [
{
"StudentID": "00001480",
"ModuleCode": "MED3007-N",
"AcYear": "2018/9",
"Mark": "80",
"Grade": "A"
},
{
"StudentID": "00001480",
"ModuleCode": "MED3020-N",
"AcYear": "2018/9",
"Mark": "82",
"Grade": "A"
}
]
};
const mergedRecords =
Array.from(
records.moduleResults
.reduce(
(acc, val) => {
if(!acc.has(val.StudentID)) {
acc.set(
val.StudentID,
{
...val,
ModuleCode: [val.ModuleCode],
Mark: [val.Mark],
Grade: [val.Grade]
}
)
} else {
const record = acc.get(val.StudentID);
acc.set(val.StudentID, {
...record,
ModuleCode: [...record.ModuleCode, val.ModuleCode],
Mark: [...record.Mark, val.Mark],
Grade: [...record.Grade, val.Grade]
});
}
return acc;
},
new Map()
).values()
);