VDL Plugin SDK

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 ParameterDescription
TThe type of the items in the input array.
K extends PropertyKeyThe type of keys.

Parameters

ParameterTypeDescription
arrreadonly T[]The input array to count occurrences.
mapper(item, index, array) => KThe 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 }