I have a map method in my JSX file that returns grades from MongoDB intro a table column, separated by comma. I would like to add another column where I would calculate average for each row.
This is how it should look:
This is my code:
{studentsGrades
.filter((a) => Number(a.partial) === Number(semester))
.map((grade, i) => {
return (
<tr key={i}>
<td className="alignRight">
<span>{getSubjectName(grade.userSubject)}</span>
</td>
<td>{grade.grade}</td> // returns a value of a grade
<td>{
"here should be average grade"
}
</td>
</tr>
);
})}
EDIT: This is my getSubjectGrades function:
const getSubjectGrades = async () => {
const gradesSubject = await axios.post(`/subjectGrade/all`, {
ids,
});
if (isSubscribed) {
let prevSubjectID = "";
let prevPartial = 0;
let gradesSubjectData = [];
for (var i = 0; i < gradesSubject.data.length; i++) {
if (
gradesSubject.data[i].userSubject != prevSubjectID ||
gradesSubject.data[i].partial != prevPartial
) {
gradesSubjectData.push(gradesSubject.data[i]);
prevSubjectID = gradesSubject.data[i].userSubject;
prevPartial = gradesSubject.data[i].partial;
} else {
if (prevPartial == gradesSubject.data[i].partial)
gradesSubjectData[gradesSubjectData.length - 1].grade +=
"," + gradesSubject.data[i].grade;
}
}
setStudentsGrades(gradesSubjectData);
}
};