[javascript] 객체 속성을 확인하기 위해 JavaScript에 “not in”연산자가 있습니까?

JavaScript에 객체에 속성이 존재하지 않는지 확인하기위한 일종의 “not in”연산자가 있습니까? Google 또는 Stack Overflow에서 이것에 대해 아무것도 찾을 수 없습니다. 다음은 이런 종류의 기능이 필요한 곳에서 작업하는 코드 스 니펫입니다.

var tutorTimes = {};

$(checked).each(function(idx){
  id = $(this).attr('class');

  if(id in tutorTimes){}
  else{
    //Rest of my logic will go here
  }
});

보시다시피, 나는 else진술 에 모든 것을 넣을 것 입니다. 부분 을 사용 하기 위해 ifelse문 을 설정하는 것은 나에게 잘못된 것 같습니다 else.



답변

else 부분을 사용하기 위해 if / else 문을 설정하는 것은 잘못된 것 같습니다 …

조건을 무효화하면 다음과 같은 else논리를 얻을 수 있습니다 if.

if (!(id in tutorTimes)) { ... }


답변

Jordão가 이미 말했듯이 그냥 무시하십시오.

if (!(id in tutorTimes)) { ... }

참고 : tutorTimes 에 프로토 타입 체인의 어디에서나 id에 이름이 지정된 속성이있는 경우 위의 테스트 입니다. 예를 들어 Object.prototype에 정의되어 있으므로 true"valueOf" in tutorTimes반환 합니다 .

현재 객체에 속성이 없는지 테스트하려면 hasOwnProperty를 사용하십시오.

if (!tutorTimes.hasOwnProperty(id)) { ... }

또는 hasOwnPropery 키가있는 경우 다음 을 사용할 수 있습니다.

if (!Object.prototype.hasOwnProperty.call(tutorTimes,id)) { ... }


답변

개인적으로 찾은

if (id in tutorTimes === false) { ... }

보다 읽기 쉽다

if (!(id in tutorTimes)) { ... }

그러나 둘 다 작동합니다.


답변

두 가지 빠른 가능성 :

if(!('foo' in myObj)) { ... }

또는

if(myObj['foo'] === undefined) { ... }


답변