迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

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

作者:迹忆客 最近更新:2024/03/17 浏览次数:

在本教程中,我们将学习如何使用多种方法来检查 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

我们可以从这里导入库。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 JavaScript 淡入图像

发布时间:2024/03/16 浏览次数:101 分类:JavaScript

可以借助某些方法和属性来淡入图像以制作具有视觉吸引力的 UI。requestAnimationFrame 方法和 className 属性是淡入图像的首选方式。

使用 C++ 编程 Arduino

发布时间:2024/03/13 浏览次数:103 分类:C++

本教程将讨论使用 Arduino IDE 在 C++ 中对 Arduino 进行编程。

使用 Windows PowerShell 启动进程

发布时间:2024/03/01 浏览次数:63 分类:编程语言

本文将解释 Start-Process cmdlet 是什么以及参数如何与 cmdlet 一起使用。本文还展示了使用 Start-Process cmdlet 的好处

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便