Skip to content

findKey

인자로 받은 함수를 만족하는 첫 번째 요소의 키를 반환해요.

인터페이스

typescript
function findKey<T extends Record<any, any>>(
  obj: T,
  predicate: (value: T[keyof T], key: keyof T, obj: T) => boolean
): keyof T | undefined;

파라미터

  • obj (T extends Record<any, any>): 탐색할 객체예요.
  • predicate ((value: T[keyof T], key: keyof T, obj: T) => boolean): 객체의 각 값에 대해 실행할 함수예요.

반환 값

(keyof T | undefined): 인자로 받은 함수를 만족하는 첫 번째 요소의 키예요. 함수를 만족하는 요소가 없으면 undefined를 반환해요.

예시

typescript
const users = {
  pebbles: { age: 24, active: true },
  barney: { age: 36, active: true },
  fred: { age: 40, active: false },
};

findKey(users, o => o.age < 40); // 'pebbles'
findKey(users, o => o.age > 50); // undefined

Lodash와 호환성

es-toolkit/compat에서 findKey를 가져오면 lodash와 완전히 호환돼요.

키를 찾는 조건을 여러 방법으로 명시할 수 있어요.

  • 검사 함수: 각각의 요소에 대해서 검사하는 함수를 실행해요. 처음으로 true를 반환하는 요소의 키를 반환해요.
  • 부분 객체: 주어진 객체와 부분적으로 일치하는 요소의 키를 반환해요.
  • 프로퍼티-값 쌍: 해당 프로퍼티와 값이 일치하는 요소의 키를 반환해요.
  • 프로퍼티 이름: 해당 프로퍼티에 대해서 참으로 평가되는 요소의 키를 반환해요.

인터페이스

typescript
function findKey<T extends Record<any, any>>(
  obj: T,
  conditionToFind: (value: T[keyof T], key: keyof T, obj: T) => boolean
): keyof T | undefined;
function findKey<T extends Record<any, any>>(obj: T, objectToFind: Partial<T[keyof T]>): keyof T | undefined;
function findKey<T extends Record<any, any>>(obj: T, propertyToFind: [keyof T[keyof T], any]): keyof T | undefined;
function findKey<T extends Record<any, any>>(obj: T, propertyToFind: keyof T[keyof T]): keyof T | undefined;

예시

typescript
const users = { barney: { age: 36 }, fred: { age: 40 } };

findKey(users, o => o.age < 40);
// => 'barney'
findKey(users, { age: 36 });
// => 'barney'
findKey(users, ['age', 36]);
// => 'barney'

const languages = { javascript: { active: false }, typescript: { active: true } };
findKey(users, 'active');
// => 'typescript'

MIT 라이선스에 따라 배포됩니다.