在 JavaScript 中檢查物件中是否存在鍵
Moataz Farid
2023年1月30日
2021年2月7日
- 在 JavaScript 中使用元素直接訪問方法檢查物件鍵是否存在
-
使用
in
運算子檢查 JavaScript 中是否存在物件鍵 -
使用
hasOwnProperty
方法檢查物件鍵是否存在於 JavaScript 中 -
使用
underscore
庫來檢查物件鍵是否存在於 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
我們可以從這裡匯入庫。