@modern-kit/utils
Version:
1 lines • 1.83 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../src/object/mapValues/index.ts"],"sourcesContent":["import { objectKeys } from '../../object/objectKeys';\n\n/**\n * @description 주어진 객체의 각 value를 주어진 iteratee 함수 결과에 따라 변환하여 새로운 객체를 반환합니다.\n *\n * @template T - 원본 객체 값의 유형입니다.\n * @template V - 반환할 새 객체 값의 유형입니다.\n * @param {T} obj - 순회할 원본 객체입니다.\n * @param {(iterateData: { key: keyof T; value: T[keyof T]; obj: T }) => V} iteratee - 객체의 각 값에 대해 호출할 변환 함수입니다.\n * @returns {Record<keyof T, V>} 변환된 value와 원래 key를 가진 새 객체를 반환합니다.\n *\n * @example\n * const obj = { fred: { age: 40 }, pebbles: { age: 1 } };\n *\n * mapValues(users, ({ value }) => value.age)\n * // { fred: 40, pebbles: 1 }\n */\nexport function mapValues<T extends Record<PropertyKey, any>, V>(\n obj: T,\n iteratee: (iterateData: { key: keyof T; value: T[keyof T]; obj: T }) => V\n): Record<keyof T, V> {\n const result = {} as Record<keyof T, V>;\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 newValue = iteratee({ key, value, obj });\n\n result[key] = newValue;\n }\n\n return result;\n}\n"],"names":["objectKeys"],"mappings":";;;;AAiBO,SAAS,SAAA,CACd,KACA,QAAA,EACoB;AACpB,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,MAAM,IAAA,GAAOA,4BAAW,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,WAAW,QAAA,CAAS,EAAE,GAAA,EAAK,KAAA,EAAO,KAAK,CAAA;AAE7C,IAAA,MAAA,CAAO,GAAG,CAAA,GAAI,QAAA;AAAA,EAChB;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}