@modern-kit/utils
Version:
34 lines (32 loc) • 1.35 kB
TypeScript
/**
* @description 배열의 각 요소가 몇 번 등장하는지 세어 객체로 반환하는 함수입니다.
*
* @template T - 배열의 타입
* @param {T} arr - 배열
* @returns {Record<T[number], number>} 배열의 각 요소의 개수를 담은 객체
*
* @example
* countBy([1, 2, 3, 2, 1]);
* // { 1: 2, 2: 2, 3: 1 }
*/
declare function countBy<T extends readonly any[]>(arr: T): Record<T[number], number>;
/**
* @description 배열의 각 요소가 몇 번 등장하는지 세어 객체로 반환하는 함수입니다.
*
* iteratee를 전달하면 각 요소를 iteratee에 전달하여 반환된 값을 기준으로 몇 번 등장하는지 세어 객체로 반환합니다.
*
* @template T - 배열의 타입
* @template K - iteratee의 반환 타입
* @param {T} arr - 배열
* @param {K} iteratee - 각 요소를 변환하는 함수
* @returns {Record<K, number>} 배열의 각 요소의 개수를 담은 객체
*
* @example
* countBy([1, 2, 3], (value) => value.toString());
* // { '1': 1, '2': 1, '3': 1 }
*
* countBy([{ address: 'seoul' }, { address: 'incheon' }, { address: 'seoul' }], (value) => value.address);
* // { seoul: 2, incheon: 1 }
*/
declare function countBy<T extends readonly any[], K extends PropertyKey>(arr: T, iteratee: (value: T[number]) => K): Record<K, number>;
export { countBy };