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
Post a Comment