检查JS对象中是否存在密钥


88

我有以下JavaScript对象:

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

有没有办法检查数组中是否存在键,与此类似?

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

不起作用。

我必须像这样遍历obj吗?

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

4
js-

True;),表明我没有js背景-从一开始就从jQuery库开始,我相信我需要学习基础知识...
user2065483 2013年

obj.has("key1")如果您使用的是ES6,它将正常工作。
暗黑破坏神


1
@Diablo我想你想说的obj.hasOwnProperty("key1")不只是has
阿米奴·卡诺

Answers:



49

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

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

if (obj.hasOwnProperty("key1")) {
  ...
}

您不应该使用它。据说很慢。最好的方法是在对象中使用“键”
汉娜·雷曼

@hannadrehman您能给我参考提到的文档/文章吗?:)
Nabin

1
@Fan_of_Martijn_Pieters我遵循严格的ESlint规则集。它是其中提到的规则之一。eslint.org/docs/rules/no-prototype-builtins
hannad rehman

@hannadrehman不要使用键入对象,这很明显是错误的,这是最好的方法。

投票不足,因为这在检测具有空值的键时不起作用。例如,如果obj [“ key1”] == null的值(因此key1存在于obj中,并且其值为null),则将返回false结果,即key1不在obj中。
user1258361

7
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");

1
或者,如果没有key1 ..if (!("key1" in obj)) { console.log("no key1 in obj"); }
Hastig Zusammenstellen

3

以上答案是好的。但这也很好并且有用。

!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


1

您可以尝试以下方法:

const data = {
  name : "Test",
  value: 12
}

if("name" in data){
  //Found
}
else {
  //Not found
}


0

最简单的方法是

const obj = {
  a: 'value of a',
  b: 'value of b',
  c: 'value of c'
};

if(obj.a){
  console.log(obj.a);
}else{
  console.log('obj.a does not exist');
}


如果a为空字符串,零或null,即使键a确实存在,它仍将返回“ obj.a不存在” 。
Twisted Whisper
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.