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
}
Use reduce() to Group an Array of Objects in JavaScript The most efficient way to group an array of objects in JavaScript is to use the reduce() function. This method executes each array element's (specified) reducer function and produces a single output value.
The most efficient method to group by a key on an array of objects in js is to use the reduce function. The reduce() method executes a reducer function (that you provide) on each element of the array, resulting in a single output value.
// Accepts the array and key const groupBy = (array, key) => { // Return the end result return array. reduce((result, currentValue) => { // If an array already present for key, push it to the array. Else create an array and push the object (result[currentValue[key]] = result[currentValue[key]] || []).
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; }, {} );
You can loop through each index and save it in a dictionary and increment it when every that key is found.
count = {};
for(a in array){
if(count[array[a]])count[array[a]]++;
else count[array[a]]=1;
}
Output will be:
Boat: 1
Car: 2
Truck: 2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With