UNPKG

@modern-kit/utils

Version:
1 lines 1.81 kB
{"version":3,"file":"index.mjs","sources":["../../../src/object/mapKeys/index.ts"],"sourcesContent":["import { objectKeys } from '../../object/objectKeys';\n\n/**\n * @description 주어진 객체의 각 key를 주어진 iteratee 함수 결과에 따라 변환하여 새로운 객체를 반환합니다.\n *\n * @template T - 원본 객체 값의 유형입니다.\n * @template K - 변환된 키의 타입입니다.\n * @param {T} obj - 키를 변환할 원래 객체입니다.\n * @param {(iterateData: { key: keyof T; value: T[keyof T]; obj: T }) => K} iteratee - 각 키를 변환하기 위한 함수입니다.\n * @returns {Record<U, T[keyof T]>} 변환된 key와 원래 value을 가진 새 객체를 반환합니다.\n *\n * @example\n * const obj = { a: 1, b: 2, c: 3 };\n *\n * mapKeys(obj, ({ key, value }) => key + value);\n * // { a1: 1, b2: 2, c3: 3 }\n */\nexport function mapKeys<\n T extends Record<PropertyKey, any>,\n K extends PropertyKey\n>(\n obj: T,\n iteratee: (iterateData: { key: keyof T; value: T[keyof T]; obj: T }) => K\n): Record<K, T[keyof T]> {\n const result = {} as Record<K, T[keyof T]>;\n const keys = objectKeys(obj);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n const newKey = iteratee({ key, value, obj });\n\n result[newKey] = value;\n }\n\n return result;\n}\n"],"names":[],"mappings":";;AAiBO,SAAS,OAAA,CAId,KACA,QAAA,EACuB;AACvB,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,MAAM,IAAA,GAAO,WAAW,GAAG,CAAA;AAE3B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,MAAM,GAAA,GAAM,KAAK,CAAC,CAAA;AAClB,IAAA,MAAM,KAAA,GAAQ,IAAI,GAAG,CAAA;AACrB,IAAA,MAAM,SAAS,QAAA,CAAS,EAAE,GAAA,EAAK,KAAA,EAAO,KAAK,CAAA;AAE3C,IAAA,MAAA,CAAO,MAAM,CAAA,GAAI,KAAA;AAAA,EACnB;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}