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);