I have an array of objects where i need sum of object property values in new array of objects,
Input:
var inputArray = [
{ subject: \'Maths\', mark
The solution using Array.forEach
, parseInt
and Object.keys
functions:
var summed = {}, result;
inputArray.forEach(function (obj) {
obj['marks'] = parseInt(obj['marks']);
obj['noOfStudents'] = parseInt(obj['noOfStudents']);
var subj = obj['subject'];
if (!summed[subj]) {
summed[subj] = obj;
} else {
summed[subj]['marks'] += obj['marks'];
summed[subj]['noOfStudents'] += obj['noOfStudents'];
}
}, summed);
result = Object.keys(summed).map((k) => summed[k]);
console.log(JSON.stringify(result, 0, 4));
The output:
[
{
"subject": "Maths",
"marks": 70,
"noOfStudents": 17
},
{
"subject": "Science",
"marks": 115,
"noOfStudents": 18
},
{
"subject": "History",
"marks": 90,
"noOfStudents": 43
}
]