jquery - Grouped Sum of a scores in a JSON object array based on SectionID in it -


i've json object array this

var scores= [{sectionid:1,sectiontitle:'section1',score:5}, {sectionid:1,sectiontitle:'section1',score:15}, {sectionid:1,sectiontitle:'section1',score:7}, {sectionid:1,sectiontitle:'section1',score:4}, {sectionid:2,sectiontitle:'section2',score:5}, {sectionid:2,sectiontitle:'section2',score:45}, {sectionid:2,sectiontitle:'section2',score:13}, {sectionid:3,sectiontitle:'section3',score:6}, {sectionid:3,sectiontitle:'section3',score:23}, {sectionid:3,sectiontitle:'section3',score:9}, {sectionid:3,sectiontitle:'section3',score:12}, {sectionid:3,sectiontitle:'section3',score:55}, {sectionid:4,sectiontitle:'section4',score:4}, {sectionid:4,sectiontitle:'section4',score:35}]; 

but need group these json object array variable grouped sum of scores in it.

so resulting variable should this

var result=[{sectionid:1,sectiontitle:'section1',score:26}, {sectionid:2,sectiontitle:'section2',score:63}, {sectionid:3,sectiontitle:'section3',score:105}, {sectionid:4,sectiontitle:'section4',score:39}]; 

i tried traversing scores variable using each function. found complicated. how can make possible best , quick way

use .foreach , sectionid unique key build new array. used indexmap fast index lookup:

var indexmap = {}; var result = []; scores.foreach(function (item) {     var index = indexmap[item.sectionid];     if (typeof index !== 'undefined') {         result[index].score += item.score;     } else {         indexmap[item.sectionid] = result.push(item) - 1;     } }); console.log(result); 

fiddle example: http://jsfiddle.net/7a6u38hd/


Comments