检查一个JS对象中是否存在一个键

我有以下的JavaScript对象:

var obj = { "key1" : val, "key2" : val, "key3" : val } 

有没有办法检查一个键是否存在于数组中,类似于这个?

 testArray = jQuery.inArray("key1", obj); 

不起作用。

我必须像这样迭代obj吗?

 jQuery.each(obj, function(key,val)){} 

使用in运算符 :

 testArray = 'key1' in obj; 

旁注:你到那里,实际上是没有jQuery对象,但只是一个普通的JavaScript对象。

这不是一个jQuery对象,它只是一个对象。

您可以使用hasOwnProperty方法来检查密钥:

 if (obj.hasOwnProperty("key1")) { ... } 
 var obj = { "key1" : "k1", "key2" : "k2", "key3" : "k3" }; if ("key1" in obj) console.log("has key1 in obj"); 

================================================== =======================

访问另一个键的子键

 var obj = { "key1": "k1", "key2": "k2", "key3": "k3", "key4": { "keyF": "kf" } }; if ("keyF" in obj.key4) console.log("has keyF in obj"); 

map.has(key)是检查地图中键的存在的最新ECMAScript6方法。 完整的细节请参考这个 。

以上答案是好的。 但是这太好用了。

 !obj['your_key'] // if 'your_key' not in obj the result --> true 

if语句中特殊的短代码很好用:

 if (!obj['your_key']){ // if 'your_key' not exist in obj console.log('key not in obj'); } else { // if 'your_key' exist in obj console.log('key exist in obj'); } 

注意:如果你的密钥等于null或者你的“if”语句将会是错误的。

 obj = {'a': '', 'b': null, 'd': 'value'} !obj['a'] // result ---> true !obj['b'] // result ---> true !obj['c'] // result ---> true !obj['d'] // result ---> false 

因此,检查obj中是否存在一个键的最好方法是: 'a' in obj