UNPKG

@modern-kit/utils

Version:
1 lines 1.82 kB
{"version":3,"file":"index.cjs","sources":["../../../src/object/omitBy/index.ts"],"sourcesContent":["import { objectKeys } from '../objectKeys';\n\n/**\n * @description 주어진 객체에서 `predicate` 함수를 만족하는 프로퍼티를 제외한 새로운 객체를 반환하는 함수입니다.\n *\n * @template T - 원본 객체의 타입.\n *\n * @param {T} obj - 주어진 함수를 적용시킬 원본 객체.\n * @param {(value: T[string], key: keyof T) => boolean} predicate - 어떤 프로퍼티를 제거할 지 결정하는 함수. 프로퍼티의 값과 키를 인자로 받아 `true`를 반환하면 해당 프로퍼티를 제거합니다.\n * @returns {Partial<T>} - `predicate` 함수를 만족하지 않는 프로퍼티로 구성된 새로운 객체.\n *\n * @example\n * const obj = { a: 1, b: undefined, c: null, d: '', e: 'str' };\n * const result = omitBy(obj, (value) => !value);\n * // { a: 1, e: 'str' }\n */\nexport function omitBy<T extends Record<PropertyKey, any>>(\n obj: T,\n predicate: (value: T[keyof T], key: keyof T) => boolean\n): Partial<T> {\n const result: Partial<T> = {};\n const objKeys = objectKeys(obj);\n\n for (let i = 0; i < objKeys.length; i++) {\n const key = objKeys[i];\n const value = obj[key];\n\n if (!predicate(value, key)) {\n result[key] = value;\n }\n }\n\n return result;\n}\n"],"names":["objectKeys"],"mappings":";;;;AAgBO,SAAS,MAAA,CACd,KACA,SAAA,EACY;AACZ,EAAA,MAAM,SAAqB,EAAC;AAC5B,EAAA,MAAM,OAAA,GAAUA,4BAAW,GAAG,CAAA;AAE9B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,GAAA,GAAM,QAAQ,CAAC,CAAA;AACrB,IAAA,MAAM,KAAA,GAAQ,IAAI,GAAG,CAAA;AAErB,IAAA,IAAI,CAAC,SAAA,CAAU,KAAA,EAAO,GAAG,CAAA,EAAG;AAC1B,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,IAChB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}