core/counters/base.counter.ts
core/counters/base.counter.ts is a file in GovLab Patterns. 21 lines of code and 7 definitions.
export const sumOf = function sumOf(values: Iterable<number>): number {
let total = 0;
for (const value of values) {
total += value;
}
return total;
};
export const increment = function increment<K>(counter: Map<K, number>, key: K, by = 1): void {
counter.set(key, (counter.get(key) ?? 0) + by);
};
export const tally = function tally<T>(items: readonly T[], keyOf: (item: T) => string): Record<string, number> {
const counts: Record<string, number> = {};
for (const item of items) {
const key = keyOf(item);
counts[key] = (counts[key] ?? 0) + 1;
}
return counts;
};
export const maxOf = function maxOf(values: readonly number[]): number {
return values.reduce((best, value) => Math.max(best, value), 0);
};