JSFiddle - React, Tailwind, and code Playground
by Randy Crews
JavaScript
var data = [{
name: "personA",
uniqueId: "abcd",
roundNumber: 0,
questionNumber: 0,
score: 1
}, {
name: "personA",
uniqueId: "abcd",
roundNumber: 0,
questionNumber: 1,
score: 1
}, {
name: "personA",
uniqueId: "abcd",
roundNumber: 1,
questionNumber: 0,
score: 0
}, {
name: "personB",
uniqueId: "efgh",
roundNumber: 0,
questionNumber: 0,
score: 1
}, {
name: "personB",
uniqueId: "efgh",
roundNumber: 0,
questionNumber: 1,
score: 0
}, {
name: "personB",
uniqueId: "efgh",
roundNumber: 1,
questionNumber: 0,
score: 1
}],
grouped = Object.values(data.reduce((r, {
name,
uniqueId,
roundNumber,
score
}) => {
r[uniqueId] = r[uniqueId] || {
name,
uniqueId,
scores: []
};
r[uniqueId].scores[roundNumber] = (r[uniqueId].scores[roundNumber] || 0) + score;
return r;
}, {}));
console.log(grouped);