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
-
Object.hasOwnProperty( 'PROPERTYNAME')
-
为循环
-
forEach循环
-
循环数组,然后通过Object.propertyName访问所需的属性
阅读所有这些,他们是非常重要的概念,在JS和非常有益的
享受Js