JavaScript - Counting Frequencies of Array Elements
Last Updated :
14 Nov, 2024
Improve
Here are the various approaches to count the frequencies of array elements in JavaScript.
Using an Object (Simple and Efficient)
This is the most common approach for counting frequency in an array. Each array element becomes a key in the object, and its value is incremented as the element appears.
const a = [1, 2, 2, 3, 3, 3, 4];
const o = {};
a.forEach(item => {
o[item] = (o[item] || 0) + 1;
});
console.log(o);
Output
{ '1': 1, '2': 2, '3': 3, '4': 1 }
Using Map (Handles Non-String Keys)
Using a Map object is ideal if you need to handle non-string keys since Map preserves the original type of keys and has built-in methods for setting and getting values.
const a = [1, 2, 2, 3, 3, 3, 4];
const f = new Map();
a.forEach(item => {
f.set(item, (f.get(item) || 0) + 1);
});
console.log(Object.fromEntries(f));
Output
{ '1': 1, '2': 2, '3': 3, '4': 1 }
Using reduce() Method (Concise and Functional)
The reduce() method is another popular and functional approach to count array items, allowing you to get the frequency count in a single line.
const a = [1, 2, 2, 3, 3, 3, 4];
const f = a.reduce((acc, item) => {
acc[item] = (acc[item] || 0) + 1;
return acc;
}, {});
console.log(f);
Output
{ '1': 1, '2': 2, '3': 3, '4': 1 }