Sum of array object property values in new array of objects in Javascript

前端 未结 5 963
时光取名叫无心
时光取名叫无心 2020-11-27 23:41

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         


        
5条回答
  •  自闭症患者
    2020-11-28 00:21

    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
        }
    ]
    

提交回复
热议问题