在 JavaScript 中检查对象中是否存在键
Moataz Farid
2023年10月12日
JavaScript
JavaScript Object
- 在 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
我们可以从这里导入库。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe