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
진술 에 모든 것을 넣을 것 입니다. 부분 을 사용 하기 위해 if
– else
문 을 설정하는 것은 나에게 잘못된 것 같습니다 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) { ... }