Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 객체나 배열에 특정 키(값)가 존재하는지 확인하는 방법

자바스크립트에서 객체와 배열 안에 특정 키나 값이 존재하는지 확인하는 방법은 여러 가지가 있습니다. 먼저 객체(Object)의 경우부터 살펴보겠습니다.

1. 객체에 키가 존재하는지 확인하기 — in 연산자

객체에 특정 키가 존재하는지 확인하려면 in 연산자를 사용합니다.

예제

let obj = {
    name: "John",
    age: 22
}
console.log('name' in obj);
console.log('address' in obj);

출력 결과

true
false

참고: in 연산자는 지정된 속성이 해당 객체 자신 또는 프로토타입 체인(prototype chain) 어디에든 존재하면 true를 반환합니다. 따라서 상속받은 속성까지 포함하여 검사한다는 점을 유의해야 합니다.

만약 객체 자체에 직접 정의된 속성만 확인하고 싶다면 hasOwnProperty() 메서드를 사용할 수도 있습니다.

console.log(obj.hasOwnProperty('name'));   // true
console.log(obj.hasOwnProperty('toString')); // false (프로토타입 체인의 속성)

2. 배열에 요소가 존재하는지 확인하기 — indexOf 메서드

배열에 특정 값이 존재하는지 확인하려면 배열의 indexOf() 메서드를 사용합니다. 값을 찾으면 해당 인덱스를 반환하고, 찾지 못하면 -1을 반환합니다.

예제

let arr = ["test", 1, 2, "hello", 23.5];
console.log(arr.indexOf({}))
console.log(arr.indexOf("hello"))
console.log(arr.indexOf(23.5))

출력 결과

-1
3
4

위 예제에서 빈 객체 {}는 참조(reference) 비교 방식 때문에 기존 배열의 어떤 요소와도 일치하지 않으므로 -1이 반환됩니다. 반면 문자열 "hello"는 인덱스 3, 숫자 23.5는 인덱스 4에 위치하므로 각각 해당 인덱스가 출력됩니다.

3. 더 간결한 방법 — includes 메서드

ES2016(ES7)부터는 존재 여부만 확인할 때 더 읽기 쉬운 includes() 메서드를 사용할 수 있습니다. 이 메서드는 불리언 값을 직접 반환합니다.

let arr = ["test", 1, 2, "hello", 23.5];
console.log(arr.includes("hello")); // true
console.log(arr.includes("world")); // false

정리

  • 객체의 키 확인: in 연산자(프로토타입 체인 포함) 또는 hasOwnProperty()(자체 속성만)
  • 배열의 값 확인: indexOf()(인덱스 반환, 없으면 -1) 또는 includes()(불리언 반환)