95

我有以下 JavaScript 对象:

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

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

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

不起作用。

我必须像这样遍历 obj 吗?

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

8 回答 8

187

使用in运算符

testArray = 'key1' in obj;

旁注:你得到的实际上不是 jQuery 对象,而只是一个普通的 JavaScript 对象。

于 2013-06-15T18:10:53.583 回答
53

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

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

if (obj.hasOwnProperty("key1")) {
  ...
}
于 2013-06-15T18:17:27.803 回答
8
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");
于 2016-01-15T10:41:54.773 回答
4

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

!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

于 2017-06-13T10:30:50.923 回答
1

你可以试试这个:

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

if("name" in data){
  //Found
}
else {
  //Not found
}
于 2019-11-09T07:23:42.097 回答
1

map.has(key)是ECMAScript 2015 检查映射中键是否存在的最新方法。有关完整的详细信息,请参阅此内容。

于 2017-05-30T09:01:44.553 回答
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');
}

于 2018-04-18T04:58:44.353 回答
0

这对我很有用

let $schedule = {lesson:'asd',age:'sad'}
    
    $schedules.forEach(function(e) {
    
              if (e['lesson']){ $title = e.lesson.lesson_name; } 
                else { $title = 'No lesson Attached'; }
    
    });
于 2022-03-04T07:53:59.207 回答