Javascript“不在”运营商检查对象属性

在JavaScript中是否有任何一种“不在”运算符来检查对象中是否存在一个属性? 我在Google或者SO周围找不到这方面的信息。 这是我正在处理的一小段代码,我需要这种function:

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部分似乎是错误的…

我设置一个if / else语句只是为了使用else部分似乎是错误的…

只是否定你的条件,你会得到else逻辑, if

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

正如Jordão所说,只是否定它:

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

注意:上述testing如果tutorTimes在原型链中的任何地方都有一个名称为id的属性。 例如"valueOf" in tutorTimes返回true,因为它是在Object.prototype中定义的。

如果要testing当前对象中是否存在属性,请使用hasOwnProperty:

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

或者如果你可能有一个hasOwnPropery的键,你可以使用这个:

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

两个快速的可能性

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

要么

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

在NodeJS工作..出于某种原因,我必须做一个检查空以及不在

 if ( ! ('job_id' in req.params) || req.params.job_id == null) { // .. } 

如果你习惯了“不在”的语法,Jordão的答案就是要走的路。

没有提到的另一种方法是使用indexOf方法。

当对象不在数组中时,indexOf()返回-1

 if (tutorTimes.indexOf(id) < 0) { // your code } 

几乎没有select

  1. Object.hasOwnProperty( 'PROPERTYNAME')

  2. 为循环

  3. forEach循环

  4. 循环数组,然后通过Object.propertyName访问所需的属性

阅读所有这些,他们是非常重要的概念,在JS和非常有益的

享受Js