Skip to content

flatMapDeep (Lodash 호환성)

es-toolkitflatMapDeep를 사용하세요

flatMapDeep 함수는 복잡한 컬렉션 타입 처리와 깊은 평탄화 로직으로 인해 느리게 동작해요.

대신 더 빠르고 현대적인 es-toolkitflatMapDeep를 사용하세요.

각 요소에 함수를 적용한 후 결과를 재귀적으로 평탄화해요.

typescript
const result = flatMapDeep(collection, iteratee);

레퍼런스

flatMapDeep(collection, iteratee)

컬렉션의 각 요소에 반복자 함수를 적용한 후 무한 깊이로 평탄화한 배열을 반환해요. 중첩된 배열 구조가 모두 평탄화되어 1차원 배열이 됩니다.

typescript
import { flatMapDeep } from 'es-toolkit/compat';

// 배열에 함수 적용 후 깊은 평탄화
function duplicate(n) {
  return [[[n, n]]];
}
flatMapDeep([1, 2], duplicate);
// 결과: [1, 1, 2, 2]

// 객체에 함수 적용 후 깊은 평탄화
const obj = { a: 1, b: 2 };
flatMapDeep(obj, (value, key) => [[[key, value]]]);
// 결과: ['a', 1, 'b', 2]

// 문자열 속성으로 매핑 후 깊은 평탄화
const users = [
  { user: 'barney', hobbies: [['hiking', 'coding']] },
  { user: 'fred', hobbies: [['reading']] },
];
flatMapDeep(users, 'hobbies');
// 결과: ['hiking', 'coding', 'reading']

반복자 없이 사용하면 값들을 재귀적으로 평탄화해요.

typescript
import { flatMapDeep } from 'es-toolkit/compat';

const obj = { a: [[1, 2]], b: [[[3]]] };
flatMapDeep(obj);
// 결과: [1, 2, 3]

부분 객체로 조건 매핑도 가능해요.

typescript
import { flatMapDeep } from 'es-toolkit/compat';

const users = [
  { user: 'barney', active: [true, false] },
  { user: 'fred', active: [false] },
];
flatMapDeep(users, { active: [false] });
// 결과: [true, true] (active 배열에 [false]가 포함된 요소들의 매칭 결과)

파라미터

  • collection (object | null | undefined): 순회할 컬렉션이에요. 배열, 객체, 문자열이 될 수 있어요.
  • iteratee (ListIterator | ObjectIterator | string | object, 선택): 각 요소에 적용할 반복자예요. 함수, 속성 이름, 또는 부분 객체가 될 수 있어요.

반환 값

(any[]): 매핑 후 재귀적으로 평탄화된 새 배열을 반환해요.

MIT 라이선스에 따라 배포됩니다.