I have a json object with data, I need to group these by name, sum the weight by name, and sum the grades. I have been trying for 2 days now. It should look like {name,weightTotal,grade{grade1total:, grade2total, grade2total}}... i looked through about 30 stack qs and tried reducing and foreach groupby and I don't understand any of it, I'm a 3rd year student doing my first internship. Need this to progress on the frontend to display these as a table. These are from rest endpoint btw.
Data
"data": [
{
name: "france Naicin",
avgTotalWeight: 16,
grade: {
grade1: 16,
grade2: 0,
grade3: 0,
},
},
{
name: "pacific gigas",
avgTotalWeight: 16,
grade: {
grade1: 16,
grade2: 0,
grade3: 0,
},
},
{
name: "france Naicin",
avgTotalWeight: 13,
grade: {
grade1: 13,
grade2: 0,
grade3: 0,
},
},
{
name: "france Naicin",
avgTotalWeight: 14,
grade: {
grade1: 14,
grade2: 0,
grade3: 0,
},
},
{
name: "france Naicin",
avgTotalWeight: 15,
grade: {
grade1: 15,
grade2: 0,
grade3: 0,
},
},
],
My code to get this json:
let a = [];
for (let i = 0; i <= data.length; i++) {
if (!data[i]) {
continue;
}
const {avgTotalWeight} = data[i];
const {name} = data[i].truerun.batch.shellfish;
const {alias} = data[i].truerun.grade_list;
const {updatedAt} = data[i];
const {isExist} = data[i].truerun;
if (avgTotalWeight !== null) {
let grade1,
grade2,
grade3 = 0;
if (alias === "G1") {
grade1 = avgTotalWeight;
} else grade1 = 0;
if (alias === "G2") {
grade2 = avgTotalWeight;
} else grade2 = 0;
if (alias === "G3") {
grade3 = avgTotalWeight;
} else grade3 = 0;
let b = {
name: name,
avgTotalWeight: avgTotalWeight,
//updatedAt: updatedAt,
//isExist: isExist,
grade: {
grade1: grade1,
grade2: grade2,
grade3: grade3,
},
};
a.push(b);
}
}
return a;