Search code examples
javascriptarraysgrouping

JavaScript Group By Array


Possible Duplicate:
array_count_values for javascript instead

Let's say I have simple JavaScript array like the following:

var array = ['Car', 'Car', 'Truck', 'Boat', 'Truck'];

I want to group and count of each so I would expect a key/value map of:

{
  Car   : 2,
  Truck : 2,
  Boat  : 1
}

Solution

  • var arr = [ 'Car', 'Car', 'Truck', 'Boat', 'Truck' ];
    var hist = {};
    arr.map( function (a) { if (a in hist) hist[a] ++; else hist[a] = 1; } );
    console.log(hist);
    

    results in

    { Car: 2, Truck: 2, Boat: 1 }
    

    This works, too:

    hist = arr.reduce( function (prev, item) { 
      if ( item in prev ) prev[item] ++; 
      else prev[item] = 1; 
      return prev; 
    }, {} );