countBy
Import from @varavel/vdl-plugin-sdk/utils/arrays.
function countBy<T, K>(arr, mapper): Record<K, number>;
Count the occurrences of each item in an array based on a transformation function.
This function takes an array and a transformation function that converts each item in the array to a key. It then counts the occurrences of each transformed item and returns an object with the transformed items as keys and the counts as values.
Type Parameters
| Type Parameter | Description |
|---|---|
T | The type of the items in the input array. |
K extends PropertyKey | The type of keys. |
Parameters
| Parameter | Type | Description |
|---|---|---|
arr | readonly T[] | The input array to count occurrences. |
mapper | (item, index, array) => K | The transformation function that maps each item, its index, and the array to a key. |
Returns
Record<K, number>
An object containing the transformed items as keys and the counts as values.
Examples
const array = ['a', 'b', 'c', 'a', 'b', 'a'];
const result = countBy(array, x => x);
// result will be { a: 3, b: 2, c: 1 }
const array = [1, 2, 3, 4, 5];
const result = countBy(array, item => item % 2 === 0 ? 'even' : 'odd');
// result will be { odd: 3, even: 2 }
// Using index parameter
const array = ['a', 'b', 'c', 'd'];
const result = countBy(array, (item, index) => index < 2 ? 'first' : 'rest');
// result will be { first: 2, rest: 2 }