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

use*_*483 76 javascript jquery

我有以下JavaScript对象:

var obj = {
    "key1" : val,
    "key2" : val,
    "key3" : val
}
Run Code Online (Sandbox Code Playgroud)

有没有办法检查数组中是否存在密钥,类似于此?

testArray = jQuery.inArray("key1", obj);
Run Code Online (Sandbox Code Playgroud)

不起作用.

我是否必须像这样迭代obj?

jQuery.each(obj, function(key,val)){}
Run Code Online (Sandbox Code Playgroud)

Sir*_*rko 158

使用in运营商:

testArray = 'key1' in obj;
Run Code Online (Sandbox Code Playgroud)

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

  • 我们可以检查不是这样吗? (3认同)
  • @SagarPanchal你是什么意思?像`testArray =!(obj中的'key1');`? (3认同)

Guf*_*ffa 44

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

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

if (obj.hasOwnProperty("key1")) {
  ...
}
Run Code Online (Sandbox Code Playgroud)


Fer*_*_Jr 6

var obj = {
    "key1" : "k1",
    "key2" : "k2",
    "key3" : "k3"
};

if ("key1" in obj)
    console.log("has key1 in obj");
Run Code Online (Sandbox Code Playgroud)

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

访问另一个密钥的子密钥

var obj = {
    "key1": "k1",
    "key2": "k2",
    "key3": "k3",
    "key4": {
        "keyF": "kf"
    }
};

if ("keyF" in obj.key4)
    console.log("has keyF in obj");
Run Code Online (Sandbox Code Playgroud)


Ali*_*aji 6

上面的答案都很好。但这也很好而且很有用。

!obj['your_key']  // if 'your_key' not in obj the result --> true
Run Code Online (Sandbox Code Playgroud)

它适用于 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');
}
Run Code Online (Sandbox Code Playgroud)

注意:如果您的键等于 null 或“”,您的“if”语句将是错误的。

obj = {'a': '', 'b': null, 'd': 'value'}
!obj['a']    // result ---> true
!obj['b']    // result ---> true
!obj['c']    // result ---> true
!obj['d']    // result ---> false
Run Code Online (Sandbox Code Playgroud)

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