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 );