@modern-kit/utils
Version:
1 lines • 1.96 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../src/object/findKey/index.ts"],"sourcesContent":["/**\n * @description 객체에서 주어진 조건에 맞는 첫 번째 키를 찾습니다.\n *\n * 이 함수는 객체의 각 키와 값을 `predicate` 함수에 전달하여 조건을 만족하는 첫 번째 키를 반환합니다.\n * 조건을 만족하는 키가 없으면 `undefined`를 반환합니다.\n *\n * @template T - 키를 찾고자 하는 객체 요소의 타입\n * @param {T} obj - 검색하고자 하는 객체입니다.\n * @param {(predicateData: {\n * value: T[keyof T];\n * key: keyof T;\n * obj: T;\n * }) => boolean} predicate - 검색하고자 하는 조건을 검사하는 함수입니다.\n * @returns {string | undefined} 검색하고자 하는 조건에 부합하는 key를 반환합니다. 만약 조건에 부합하는 key가 없다면 undefined를 반환합니다.\n *\n * @example\n * const obj = {\n * bike: { active: true },\n * plane: { active: true },\n * car: { active: false },\n * };\n *\n * findKey(obj, (item) => item.active); // 'bike'\n */\nexport function findKey<T extends Record<PropertyKey, any>>(\n obj: T,\n predicate: (predicateData: {\n value: T[keyof T];\n key: keyof T;\n obj: T;\n }) => boolean\n): string | undefined {\n const keys = Object.keys(obj);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n\n if (predicate({ value, key, obj })) {\n return key;\n }\n }\n\n return undefined;\n}\n"],"names":[],"mappings":";;AAwBO,SAAS,OAAA,CACd,KACA,SAAA,EAKoB;AACpB,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA;AAE5B,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;AAErB,IAAA,IAAI,UAAU,EAAE,KAAA,EAAO,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG;AAClC,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}