Skip to content

zipObjectDeep

INFO

이 함수는 호환성을 위한 es-toolkit/compat 에서만 가져올 수 있어요. 대체할 수 있는 네이티브 JavaScript API가 있거나, 아직 충분히 최적화되지 않았기 때문이에요.

es-toolkit/compat에서 이 함수를 가져오면, lodash와 완전히 똑같이 동작해요.

두 배열을 하나의 객체로 결합해요. 첫 번째 배열은 프로퍼티 경로를 나타내고, 두 번째 배열은 값을 나타내요. zipObject와 다르게, 프로퍼티로 a.b 와 같은 경로를 지정할 수 있어요.

프로퍼티 이름을 나타내는 배열이 값을 나타내는 배열보다 길면, 값들은 undefined로 채워져요.

인터페이스

typescript
function zipObjectDeep<P extends PropertyKey, V>(keys: ArrayLike<P | P[]>, values: ArrayLike<V>): { [K in P]: V };

파라미터

  • keys (ArrayLike<P | P[]>): 프로퍼티 경로가 포함된 배열.
  • values (ArrayLike<V>): 값에 대응되는 값이 포함된 배열.

반환 값

({ [K in P]: V }): 주어진 속성 이름과 값으로 구성된 새로운 객체예요.

예시

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

const paths = ['a.b.c', 'd.e.f'];
const values = [1, 2];
const result = zipObjectDeep(paths, values);
// result 는 { a: { b: { c: 1 } }, d: { e: { f: 2 } } }가 돼요

const paths = [
  ['a', 'b', 'c'],
  ['d', 'e', 'f'],
];
const values = [1, 2];
const result = zipObjectDeep(paths, values);
// result 는 { a: { b: { c: 1 } }, d: { e: { f: 2 } } }가 돼요

const paths = ['a.b[0].c', 'a.b[1].d'];
const values = [1, 2];
const result = zipObjectDeep(paths, values);
// result 는 { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }가 돼요

성능 비교

번들 사이즈성능
es-toolkit/compat938 바이트 (88% 작음)1,102,767 회 (25% 빠름)
lodash-es7,338 바이트1,476,660 회

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