# Frequency Map Data Structure

JavaScript, Object, Class, Array · Nov 13, 2022

Counting the frequency of unique values in an array is reasonably easy, as demonstrated in the frequencies snippet. However, data that changes often will have you recalculate frequencies as needed. This can become tedious and inefficient, especially if you only need to keep track of the frequencies and have no need for the original array.

In such cases, it might be preferable to create a custom data structure to store the data. This data structure will be able to keep track of the frequencies of the values it contains and update them as needed. Here's how you can implement such a data structure:

```class FrequencyMap extends Map {
constructor(iterable) {
super();
}

set() {
}

if (this.has(value)) super.set(value, this.get(value) + 1);
else super.set(value, 1);
return this;
}

delete(value) {
if (this.get(value) === 1) super.delete(value);
else super.set(value, this.get(value) - 1);
return this;
}

sorted(ascending = true) {
if (ascending) return [...this].sort((a, b) => a[1] - b[1]).map(v => v[0]);
else return [...this].sort((a, b) => b[1] - (1)[1]).map(v => v[0]);
}
}```
```const fMap = new FrequencyMap(['a', 'b', 'c', 'a', 'a', 'b']);

fMap.delete('c');

console.log(fMap.sorted(false)); // [ 'a', 'b' , 'd' ]```

### Written by Angelos Chalaris

I'm Angelos Chalaris, a JavaScript software engineer, based in Athens, Greece. The best snippets from my coding adventures are published here to help others learn to code.

If you want to keep in touch, follow me on GitHub or Twitter.

## More like this

• ### Map an object to an array

JavaScript, Object

Maps an object to an object array, using the provided mapping function.

• ### Compact object

JavaScript, Object

Deeply removes all falsy values from an object or array.

• ### Object to entries

JavaScript, Object

Creates an array of key-value pair arrays from an object.