JS 객체에 키가 있는지 확인


88

다음 JavaScript 개체가 있습니다.

var obj = {
    "key1" : val,
    "key2" : val,
    "key3" : val
}

이와 비슷한 배열에 키가 있는지 확인하는 방법이 있습니까?

testArray = jQuery.inArray("key1", obj);

작동하지 않습니다.

이렇게 obj를 반복해야합니까?

jQuery.each(obj, function(key,val)){}

4
JS - 객체 리터럴 : (하지의 jQuery 객체)
funerr

True;), 내가 js 배경 지식이 없음을 보여줍니다. 처음부터 jQuery 라이브러리로 시작했고 기본 사항을 배워야한다고 생각합니다 ...
user2065483

obj.has("key1")ES6를 사용하는 경우 작동합니다.
Diablo


1
@Diablo 나는 당신이 obj.hasOwnProperty("key1")대신 말하려고하는 것 같아요 has?
Aminu Kano

답변:


173

in연산자 사용 :

testArray = 'key1' in obj;

사이드 노트 : 당신이 얻은 것은 실제로 jQuery 객체가 아니라 평범한 JavaScript 객체입니다.


4
이렇지 않은지 확인할 수 있습니까 in?
SagarPPanchal

5
@SagarPanchal 무슨 의미입니까? 같은 거 testArray = !( 'key1' in obj);?
Sirko 2015 년

49

그것은 jQuery 객체가 아니라 객체 일뿐입니다.

hasOwnProperty 메서드를 사용하여 키를 확인할 수 있습니다.

if (obj.hasOwnProperty("key1")) {
  ...
}

당신은 그것을 사용해서는 안됩니다. 느리다고합니다. 가장 좋은 방법은 사용 목적에 '키'이다
hannad 레흐만

@hannadrehman 언급 된 문서 / 기사에 대한 참고 자료를 제공해 주시겠습니까? :)
Nabin

1
@Fan_of_Martijn_Pieters 나는 엄격한 ESlint 규칙 세트를 따릅니다. 규칙 중 하나로 언급되어 있습니다. eslint.org/docs/rules/no-prototype-builtins
hannad 레흐만

@hannadrehman 키-인-오브젝트를 사용하지 마십시오. 이것은 명백한 잘못 일 수 있습니다. 이것이 최선의 방법입니다.

null 값이있는 키를 감지 할 때 작동하지 않기 때문에 비추천했습니다. 예를 들어, obj [ "key1"] == null (따라서 key1이 obj에 있고 값이 null 인 경우)이면 key1이 obj에 없다는 잘못된 결과가 반환됩니다.
user1258361

7
var obj = {
    "key1" : "k1",
    "key2" : "k2",
    "key3" : "k3"
};

if ("key1" in obj)
    console.log("has key1 in obj");

================================================ =======================

다른 키의 하위 키에 액세스하려면

var obj = {
    "key1": "k1",
    "key2": "k2",
    "key3": "k3",
    "key4": {
        "keyF": "kf"
    }
};

if ("keyF" in obj.key4)
    console.log("has keyF in obj");

1
또는 어떤 키 1의 경우 ..if (!("key1" in obj)) { console.log("no key1 in obj"); }
Hastig Zusammenstellen

3

위의 답변은 좋습니다. 그러나 이것도 좋고 유용합니다.

!obj['your_key']  // if 'your_key' not in obj the result --> true

if 문에서 특별한 짧은 스타일의 코드에 적합합니다.

if (!obj['your_key']){
    // if 'your_key' not exist in obj
    console.log('key not in obj');
} else {
    // if 'your_key' exist in obj
    console.log('key exist in obj');
}

참고 : 키가 null 또는 ""이면 "if"문이 잘못된 것입니다.

obj = {'a': '', 'b': null, 'd': 'value'}
!obj['a']    // result ---> true
!obj['b']    // result ---> true
!obj['c']    // result ---> true
!obj['d']    // result ---> false

따라서 obj에 키가 있는지 확인하는 가장 좋은 방법은 다음과 같습니다.'a' in obj


1

이것을 시도 할 수 있습니다.

const data = {
  name : "Test",
  value: 12
}

if("name" in data){
  //Found
}
else {
  //Not found
}


0

가장 간단한 방법은

const obj = {
  a: 'value of a',
  b: 'value of b',
  c: 'value of c'
};

if(obj.a){
  console.log(obj.a);
}else{
  console.log('obj.a does not exist');
}


경우 a빈 문자열, 제로 또는 null 중 하나이지만, 여전히 키에도 불구하고, 'obj.a이 존재하지 않는'반환 a하지 존재한다.
Twisted Whisper
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.