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

时间:2013-06-15 18:09:04

标签: javascript jquery

我有以下JavaScript对象:

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

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

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

不起作用。

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

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

7 个答案:

答案 0 :(得分:145)

使用in operator

testArray = 'key1' in obj;

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

答案 1 :(得分:42)

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

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

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

答案 2 :(得分:6)

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

答案 3 :(得分: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或""你的"如果"陈述是错误的。

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

答案 4 :(得分:1)

map.has(key)是最新的 ECMAScript6  检查地图中密钥存在的方法。 Refer to this了解详情。

答案 5 :(得分: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');
}

答案 6 :(得分:0)

您可以尝试以下方法:

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

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