在 JavaScript 中檢查物件中是否存在鍵

Moataz Farid 2023年10月12日
  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

我們可以從這裡匯入庫。

相關文章 - JavaScript Object