UNPKG

@modern-kit/utils

Version:
1 lines 1.58 kB
{"version":3,"file":"index.cjs","sources":["../../../src/object/pick/index.ts"],"sourcesContent":["import { cloneDeep } from '../../common';\n\n/**\n * @description 주어진 객체에서 지정된 키들만을 선택하여 새로운 객체를 반환하는 함수입니다.\n *\n * @template T - 원본 객체의 타입.\n * @template K - 선택할 키들의 타입, T의 키 중 일부.\n *\n * @param {T} obj - 선택할 키들을 가진 원본 객체.\n * @param {K[] | readonly K[]} keys - 선택할 키들의 배열.\n * @returns {Pick<T, K>} - 지정된 키들만 포함된 새로운 객체.\n *\n * @example\n * const obj = { a: 1, b: 2, c: 3 };\n * const result = pick(obj, ['a', 'c']);\n * // { a: 1, c: 3 }\n *\n * @example\n * const user = { name: 'John', age: 30, role: 'admin' };\n * const result = pick(user, ['name', 'role']);\n * // { name: 'John', role: 'admin' }\n */\nexport function pick<T extends Record<PropertyKey, any>, K extends keyof T>(\n obj: T,\n keys: K[] | readonly K[]\n): Pick<T, K> {\n const result = {} as T;\n const copiedObj = cloneDeep(obj);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n result[key] = copiedObj[key];\n }\n\n return result;\n}\n"],"names":["cloneDeep"],"mappings":";;;;AAsBO,SAAS,IAAA,CACd,KACA,IAAA,EACY;AACZ,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,MAAM,SAAA,GAAYA,0BAAU,GAAG,CAAA;AAE/B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,MAAM,GAAA,GAAM,KAAK,CAAC,CAAA;AAElB,IAAA,MAAA,CAAO,GAAG,CAAA,GAAI,SAAA,CAAU,GAAG,CAAA;AAAA,EAC7B;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}