Skip to main content

flatMapDeep

주어진 iteratee 함수로 배열의 각 요소를 재귀적으로 매핑한 후, 결과 배열을 깊게 평탄화합니다.

arr.map.flat(Infinity)와 동일하게 동작하지만, 성능적으로 더 우수합니다.

Code

🔗 실제 구현 코드 확인

Benchmark

  • hz: 초당 작업 수
  • mean: 평균 응답 시간(ms)
이름hzmean성능
modern-kit/flatMapDeep251,685.910.0040fastest
lodash/flatMapDeep.map184,467.290.0054-
js built-in/map.flat57,011.350.0175slowest
  • modern-kit/flatMapDeep
    • 1.35x faster than lodash/flatMapDeep.map
    • 4.41x faster than js built-in/map.flat

Interface

typescript
/**
* @description 중첩된 배열 타입을 재귀적으로 풀어내어 가장 내부의 요소 타입을 추출하는 유틸리티 타입
*/
type ExtractNestedArrayType<T> = T extends readonly (infer U)[]
? ExtractNestedArrayType<U>
: T;
typescript
function flatMapDeep<T, U>(
arr: T[] | readonly T[],
iteratee: (item: ExtractNestedArrayType<T>) => U
): U[];

Usage

typescript
import { flatMapDeep } from '@modern-kit/utils';

const arr = [1, 2, [3, 4, [5, 6]]];
flatMapDeep(arr, (item) => ({ id: item }));
// [{ id: 1}, { id: 2}, { id: 3}, { id: 4}, { id: 5}, { id: 6}];