在 JavaScript 中检查对象中是否存在键

  1. 在 JavaScript 中使用元素直接访问方法检查对象键是否存在
  2. 使用 in 运算符检查 JavaScript 中是否存在对象键
  3. 使用 hasOwnProperty 方法检查对象键是否存在于 JavaScript 中
  4. 使用 underscore 库来检查对象键是否存在于 JavaScript 中
在 JavaScript 中检查对象中是否存在键

在本教程中,我们将学习如何使用多种方法来检查 JavaScript 中是否存在键。

在 JavaScript 中使用元素直接访问方法检查对象键是否存在

如果一个键存在,它不应该返回 undefined。为了检查它是否返回 undefined,我们对键进行直接访问,可以用两种样式,一种是对象样式,一种是括号访问样式。

在下面的例子中,我们将展示如何使用括号样式直接访问键来检查键是否存在。

let myObject = {'mykey1': 'My Value 1', 'mykey2': 'My Value 2'};

function isKeyExists(obj, key) {
  if (obj[key] == undefined) {
    return false;
  } else {
    return true;
  }
}
let result0 = isKeyExists(myObject, 'mykey0')
console.log('Check for the non-existing key, is key exists > ' + result0)

let result1 = isKeyExists(myObject, 'mykey1')
console.log('Check for the existing key, is key exists > ' + result1)

输出:

Check for the non-existing key, is key exists > false
Check for the existing key, is key exists > true

另一种通过直接访问来检查键的样式是使用对象样式。在下面的例子中,我们可以看到如何在 JavaScript 中检查该键的存在。

let myObject = {mykey1: 'My Value 1', mykey2: 'My Value 2'};

let result = myObject.mykey0 != undefined
console.log('Is myKey0 exists ? ' + result)

let result1 = myObject.mykey1 != undefined
console.log('Is myKey1 exists ? ' + result1)

输出:

Is myKey0 exists ? false
Is myKey1 exists ? true

使用直接访问键检查 undefined 的一个缺点是,键的值可能等于 undefined。让我们看下面的例子来说明该方法的问题。

let myObject = {mykey0: undefined, mykey1: 'My Value 1'};

let result = myObject.mykey0 != undefined
console.log('Is myKey0 exists? ' + result)

let result1 = myObject.mykey1 != undefined
console.log('Is myKey1 exists? ' + result1)

输出:

Is myKey0 exists? false
Is myKey1 exists? true

上述案例的解决方案是,当你想用未定义的值初始化一个属性时,千万不要给它分配 undefined,而是用 null 来初始化它。

如果我们坚持使用 undefined 值来初始化键,我们应该使用 in 操作符,hasOwnProperty 方法,或者 underscore_.has 方法。

使用 in 运算符检查 JavaScript 中是否存在对象键

如果在目标对象中没有找到键,则简单地使用 in 操作符返回 false,如果找到则返回 true

let myObject =
    {favoriteDish: 'Spaghetti', language: 'English'}

    function isKeyExists(obj, key) {
      return key in obj;
    }

    console.log(
        'Does language key exists? ' + isKeyExists(myObject, 'language'))
console.log(
    'Does nationality key exists? ' + isKeyExists(myObject, 'nationality'))

输出:

Does language key exists? true
Does nationality key exists? false

使用 hasOwnProperty 方法检查对象键是否存在于 JavaScript 中

另一种检查对象是否包含特定属性键的方法是使用 hasOwnProperty 方法。在下面的例子中,我们将展示如何使用 hasOwnProperty 方法。

let myObject =
    {favoriteDish: 'Spaghetti', language: 'English'}

    function isKeyExists(obj, key) {
      return obj.hasOwnProperty(key);
    }

    console.log(
        'Does the object have language key? ' +
        isKeyExists(myObject, 'language'))
console.log(
    'Does the object have nationality key? ' +
    isKeyExists(myObject, 'nationality'))

输出:

Does the object have language key? true
Does the object have nationality key? false

使用 underscore 库来检查对象键是否存在于 JavaScript 中

如果我们已经使用了任何一个 underscore 库方法,我们可以使用 _.has() 方法,因为如果该对象有提供的键,它将返回 true,如果没有,则返回 false

let myObject =
    {favoriteDish: 'Spaghetti', language: 'English'}

    console.log(
        'Check using underscore library if the object has language key? ' +
        _.has(myObject, 'language'))

console.log(
    'Check using underscore library if the object has nationality key? ' +
    _.has(myObject, 'nationality'))

输出:

Check using underscore library if the object has language key? true
Check using underscore library if the object has nationality key? false

我们可以从这里导入库。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe

相关文章 - JavaScript Object