GroupBy
by fergal_doyle
JavaScript
Array.prototype.toGroupedArray = function(prop, undefined) {
"use strict";
var grouped = [],
obj = {},
currProp,
l = this.length;
for(var i=0; i<l; i++) {
currProp = this[i][prop];
if(obj[currProp] == undefined){
obj[currProp] = [];
}
obj[currProp].push(this[i]);
}
for(var p in obj){
if(obj.hasOwnProperty(p)){
grouped.push({name: p, items: obj[p]})
}
}
grouped.sort(function(a,b){
return a.name - b.name;
});
return grouped;
}
var arr = [{"title":"PPS EMEA Channel Sales","time":0.25},{"title":"PPS EMEA Channel Sales","time":0.25},{"title":"PPS EMEA Channel Sales","time":0.75},{"title":"PPS EMEA Channel Sales","time":1},{"title":"PPS Reporting","time":0.25},{"title":"PPS Reporting","time":0.25}];
var grouped = arr.toGroupedArray("title");
console.log( grouped );