Counter
A map that counts occurrences of keys.
@example
// Count word occurrences
const wordCounter = new Counter<string>()
const words = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']
for (const word of words) {
wordCounter.increment(word)
}
console.log(wordCounter.get('apple')) // 3
console.log(wordCounter.get('banana')) // 2
console.log(wordCounter.get('cherry')) // 1
console.log(wordCounter.get('orange')) // 0 (defaults to 0)
@example
// Initialize with existing counts
const counter = new Counter<string>([
['red', 5],
['blue', 3],
['green', 7]
])
counter.increment('red', 2) // red: 5 -> 7
counter.decrement('blue') // blue: 3 -> 2
counter.increment('yellow') // yellow: 0 -> 1
console.log(counter.get('red')) // 7
console.log(counter.get('blue')) // 2
console.log(counter.get('yellow')) // 1
@example
// Track event frequencies
const eventCounter = new Counter<string>()
eventCounter.increment('click', 5)
eventCounter.increment('hover', 3)
eventCounter.increment('click', 2)
// Get most common events
const events = [...eventCounter.entries()]
.sort((a, b) => b[1] - a[1])
console.log(events) // [['click', 7], ['hover', 3]]
class Counter<K> extends Map<K, number> {}
constructor(iterable?: Iterable<readonly [K, number]>);
decrement(key: K, amount?: number): void;
get(key: K): number;
increment(key: K, amount?: number): void;