This function counts the occurrences of all elements in an array. It uses the reduce()
method to iterate over the array and increment a count for each unique element, returning an object with each element and its count.
JavaScript:
let countElements = arr => arr.reduce((acc, val) => (acc[val] = (acc[val] || 0) + 1, acc), {});
// Example
console.log(countElements([1, 2, 3, 1, 2, 3, 1])); // {1: 3, 2: 2, 3: 2}
console.log(countElements(['a', 'b', 'a', 'c', 'a'])); // {a: 3, b: 1, c: 1}
TypeScript:
let countElements = (arr: Array<any>): Object => arr.reduce((acc, val) => (acc[val] = (acc[val] || 0) + 1, acc), {});
// Example
console.log(countElements([1, 2, 3, 1, 2, 3, 1])); // {1: 3, 2: 2, 3: 2}
console.log(countElements(['a', 'b', 'a', 'c', 'a'])); // {a: 3, b: 1, c: 1