JavaScript中是否存在任何“not in”运算符来检查对象中是否存在属性?我无法在Google或SO周围找到任何相关信息。这是我正在处理的一小段代码,我需要这种功能:
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部分......
,这似乎是错误的答案 0 :(得分:266)
我设置if / else语句只是为了使用else部分......
只是否定你的情况,你会在else
内得到if
逻辑:
if (!(id in tutorTimes)) { ... }
答案 1 :(得分:26)
正如Jordão所说,只是否定它:
if (!(id in tutorTimes)) { ... }
注意:上述测试是否tutorTimes具有在原型链中以id,任何地方指定名称的属性。例如,"valueOf" in tutorTimes
返回 true ,因为它在 Object.prototype 中定义。
如果要测试当前对象中是否存在属性,请使用hasOwnProperty:
if (!tutorTimes.hasOwnProperty(id)) { ... }
或者,如果你有一个 hasOwnPropery 的密钥,你可以使用它:
if (!Object.prototype.hasOwnProperty.call(tutorTimes,id)) { ... }
答案 2 :(得分:13)
两种快速的可能性:
if(!('foo' in myObj)) { ... }
或
if(myObj['foo'] === undefined) { ... }
答案 3 :(得分:0)
我个人找到
if (id in tutorTimes === false) { ... }
比
更容易阅读if (!(id in tutorTimes)) { ... }
但两者都可以。