广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS判断空对象的几个方法大盘点
  • 241
分享到

JS判断空对象的几个方法大盘点

2024-04-02 19:04:59 241人浏览 安东尼
摘要

目录知识准备Object.keysObject.getOwnPropertyNames可枚举属性hasOwnProperty盘点判空方法JSON.stringify判空for in判

知识准备

在盘点js判空方法之前我们先来了解下面的三个方法。

Object.keys

Object.keys()方法是以对象为参数,返回一个包含该对象内所匹配的属性和方法的数组

  var obj = {
    name: "cxy",
    age: "19"
  }; 
  var objarray = Object.getOwnPropertyNames(obj);
  console.log(objArray)

可以看到objArray为返回值,且返回值为以对象内的属性为内容的数组

Object.getOwnPropertyNames

Object.getOwnPropertyNames()方法同样是也是以对象为参数,返回一个包含该对象内所匹配的属性和方法的数组

大家在这里会发出疑问,这两个有啥区别?Object.getOwnPropertyNames()可以返回所有的属性,而Object.keys()只能返回可枚举属性,诶?到这里大家又疑惑了可枚举属性又是个啥?不要着急,我来解释一下什么叫可枚举属性

可枚举属性

可枚举或者不可枚举属性是对象内部通过可枚举标志enumerable来进行区分的,在默认情况下,我们obj.name = "cxy"为对象新增了一个属性后,其可枚举标志enumerable为ture,而当其值为false的时候它是不可枚举的,当我们对对象进行for,Object.keys(),JSON.stringify()的时候不可枚举属性是找不出来的,我们可以理解为不可枚举属性是隐身

现在我们拿上面的Object.getOwnPropertyNamesObject.keys()进行实战举例,我们通过defineProperty来为对象添加age属性,因为该方法可以设置枚举标志,这里设置为false,可以看到下面两个不同的返回结果

var stuObj = {
    name: "cxy"
}
Object.defineProperty(stuObj, 'age', {
  value: "18",
  enumerable: false
});
console.log(Object.keys(stuObj))
console.log(Object.getOwnPropertyNames(stuObj))

hasOwnProperty

hasOwnProperty()是用来判断某对象是否含有某属性的,其参数为属性名

  var stuObj = {
    name: "cxy"
  }
  console.log(stuObj.hasOwnProperty('name'))

但是这里要注意一个问题就是,hasOwnProperty()判断继承属性的时候会返回false,继承属性即对象从原型对象上继承的属性,比如说toString

盘点判空方法

JSON.stringify判空

这种方式是比较简单的了,使用JSON.stringify将对象转换为字符串,再通过等于判断即可得到对象是否为空的布尔值

let obj = {
    name: "cxy"
}
console.log(JSON.stringify(obj) == '{}')

for in判空

使用for in的话可以当触发循环的时候返回false没有触发循环的时候代表对象为空返回ture

let forNull = (items) => {
    for (let item in items) {
        return false
    }
    return true
}

Object.getOwnPropertyNames判空

这里使用了上文提及的Object.getOwnPropertyNames,将返回的数组的length作为判断依据。

let stuArray = Object.getOwnPropertyNames(obj)
console.log(stuArray.length === 0)

Object.keys()判空

和上个方法一样,使用数组作为判断依据

let stuArray = Object.getOwnPropertyNames(obj)
console.log(stuArray.length === 0)

hasOwnProperty判空

使用hasOwnProperty是使用for循环将元素进行判断如果含有则返回false说明不为空,反之则为空

let forNull = (items) => {
    for (let item in items) {
        if(items.hasOwnProperty(item)){
            return false
        }
    }
    return true
}

附将对象转换为字符串进行比较

这种方法很不推荐,但也确实是最容易想到的,主要使用JSON.stringify()这个方法对对象进行强转,贴出来仅供一看: 

var a={};
var b=new Object();
console.log("对象字面量的比较结果:"+(JSON.stringify(a)=="{}"))
console.log("构造函数的比较结果:"+(JSON.stringify(b)=="{}"))

总结

到此这篇关于JS判断空对象方法的文章就介绍到这了,更多相关JS判断空对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JS判断空对象的几个方法大盘点

本文链接: https://www.lsjlt.com/news/139291.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS判断空对象的几个方法大盘点
    目录知识准备Object.keysObject.getOwnPropertyNames可枚举属性hasOwnProperty盘点判空方法JSON.stringify判空for in判...
    99+
    2022-11-13
  • JS判断对象是否为空对象的几种实用方法汇总
    目录1.通过JSON自带的stringify()方法来判断2.for in 循环判断3.使用ES6的Object.keys()方法4.Object.getOwnPropertyNam...
    99+
    2022-11-13
  • JS判断空对象的方法有哪些
    小编给大家分享一下JS判断空对象的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Object.keysObject.keys()方法是以对象为参数,返回...
    99+
    2023-06-29
  • JS实现判断对象是否为空对象的5种方法
    1.将json对象转化为json字符串,再判断该字符串是否为"{}" var data = {}; var b = (JSON.stringify(data) == "{}")...
    99+
    2022-11-12
  • 在JS中判断两个对象是否相等方法详解
    目录严格相等运算符 (===)对象属性的比较使用 Lodash 等工具库判断两个对象是否相等JSON.stringify 方法使用 Object.is() 方法严格相等运算符 (==...
    99+
    2023-05-19
    js判断 js判断对象 判断对象是否相等
  • js中isSame判断对象是否相同的方法
    这篇文章给大家分享的是有关js中isSame判断对象是否相同的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、isSame判断一个moment对象是否和另一个moment对象相同。moment('2...
    99+
    2023-06-15
  • JS之判断是否为对象或数组的几种方式总结
    目录JS判断是否为对象或数组的几种方式判断值是否是对象判断值是否为数组如何判断一个对象是不是数组(例子解释)总结JS判断是否为对象或数组的几种方式 判断值是否是对象 1.toStri...
    99+
    2023-05-16
    JS判断是否为对象 JS判断是否为数组 JS判断对象 JS判断数组
  • java判断实体对象为空的方法是什么
    Java判断实体对象是否为空的方法有多种方式,以下是其中一些常用的方法:1. 使用if语句判断对象是否为空:```javaif (o...
    99+
    2023-09-16
    java
  • JavaScript中如何判断对象是否为空的方法
    目录Object.keys()示例为什么需要额外判断对象的构造函数呢?另一种边界情况总结在自己的日常开发中,一般使用Object.keys()来判断对象是否为空: const obj...
    99+
    2022-11-13
  • 总结java中判断对象是否为空的方法
    我们想要判断对象是否为空,像基本类型那样判断是不可以的, ==={} ?这样是错误的,因为这只是比较引用地址是否相同,所以可以采取下面的方法来进行判断。根据for...in遍历对象,如果存在则返回true,否则返回falsefor ( le...
    99+
    2017-08-16
    java 判断 对象 为空 方法
  • es6判断对象是否为空的方法是什么
    在ES6中,可以使用`Object.keys()`方法来判断一个对象是否为空。该方法返回一个由对象的可枚举属性组成的数组,如果对象没...
    99+
    2023-10-09
    es6
  • Java中判断对象是否为空的方法详解
    在Java编程中,经常会遇到判断对象是否为空的情况。空指针异常是常见的程序错误之一,因此在编码过程中,判断对象是否为空是一个重要的防御措施。本篇博客将深入探讨Java中判断对象是否为空的不同方法,...
    99+
    2023-09-01
    java python 开发语言
  • JS判断对象属性是否存在的方法是什么
    这篇文章主要介绍了JS判断对象属性是否存在的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS判断对象属性是否存在的方法是什么文章都会有所收获,下面我们一起来看看吧。背景在这篇Accessible O...
    99+
    2023-06-29
  • JavaScript判断一个对象是否为数组的方法有哪些
    这篇文章主要介绍了JavaScript判断一个对象是否为数组的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在 JS 中使用数组是一种常见操作,有时在开发中,获得一...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作