当前位置: 首页 > news >正文

js判断空对象

1. 使用 Object.keys() 方法

Object.keys(obj) 方法返回一个包含对象可枚举属性名称的数组。如果返回的数组长度为 0,表示对象为空。

const isEmpty = (obj) => Object.keys(obj).length === 0;// 示例
const emptyObject = {};
const nonEmptyObject = { key: 'value' };console.log(isEmpty(emptyObject)); // true
console.log(isEmpty(nonEmptyObject)); // false

2. 使用 Object.entries() 方法

Object.entries(obj) 返回一个包含对象自身可枚举属性 [key, value] 对的数组。如果该数组长度为 0,则对象为空。

const isEmpty = (obj) => Object.entries(obj).length === 0;// 示例
console.log(isEmpty({})); // true
console.log(isEmpty({ a: 1 })); // false

3. 使用 JSON.stringify() 方法

通过将对象序列化为 JSON 字符串,判断其是否为 {}

const isEmpty = (obj) => JSON.stringify(obj) === '{}';// 示例
console.log(isEmpty({})); // true
console.log(isEmpty({ a: 1 })); // false

4. 使用 for...in 循环结合hasOwnProperty函数

使用 for...in 循环遍历对象,如果能够找到一个可枚举的属性,则对象不为空。注意:这会遍历对象的原型链上的可枚举属性。

const isEmpty = (obj) => {for (let key in obj) {// 如果有可枚举属性,返回 falseif (obj.hasOwnProperty(key)) {return false; // 非空对象}}return true; // 空对象
};// 示例
console.log(isEmpty({})); // true
console.log(isEmpty({ a: 1 })); // false

5. 结合 Object.getOwnPropertyNames()Object.getOwnPropertySymbols()

可以使用 Object.getOwnPropertyNames(obj)Object.getOwnPropertySymbols(obj) 方法(分别返回对象的可枚举和不可枚举属性,及符号属性)来判断。

const isEmpty = (obj) => Object.getOwnPropertyNames(obj).length === 0 && Object.getOwnPropertySymbols(obj).length === 0;// 示例
console.log(isEmpty({})); // true
console.log(isEmpty({ a: 1 })); // false

总结

  • 最常用且推荐的方法是使用 Object.keys(),因为它简洁且句意明确。
  • Object.entries()JSON.stringify() 也很常见,适用于不同场景。
  • for...in 循环适合需要检查可枚举属性的情况。
  • 使用原生的 Object.getOwnPropertyNames()Object.getOwnPropertySymbols() 方法更为全面。
http://www.lryc.cn/news/493447.html

相关文章:

  • visionpro官方示例分析(一) 模板匹配工具 缺陷检测工具
  • PyCharm中Python项目打包并运行到服务器的简明指南
  • cocos creator 3.8 合成大西瓜Demo 11
  • Vue前端开发-动态插槽
  • 使用easyexcel导出复杂模板,同时使用bean,map,list填充
  • 最大值(Java Python JS C++ C )
  • 17.5k Star,ThingsBoard 一款开源、免费、功能全面的物联网 IoT 平台 -慧知开源充电桩平台
  • 《C++ 与神经网络:自动微分在反向传播中的高效实现之道》
  • 【CSS】设置文本超出N行省略
  • open-instruct - 训练开放式指令跟随语言模型
  • DI依赖注入详解
  • TDengine在debian安装
  • 【C#设计模式(15)——命令模式(Command Pattern)】
  • XGBoost库介绍:提升机器学习模型的性能
  • 网络安全构成要素
  • SpringMVC——SSM整合
  • Windows系统电脑安装TightVNC服务端结合内网穿透实现异地远程桌面
  • 【ubuntu24.04】GTX4700 配置安装cuda
  • Spring Boot 动态数据源切换
  • MySQL技巧之跨服务器数据查询:进阶篇-从A服务器的MySQ数据库复制到B服务器的SQL Server数据库的表中
  • 大语言模型LLM的微调中 QA 转换的小工具 xlsx2json.py
  • CFD 在生物反应器放大过程中的作用
  • Axios与FastAPI结合:构建并请求用户增删改查接口
  • 美畅物联丨如何通过ffmpeg排查视频问题
  • 基于OpenCV视觉库让机械手根据视觉判断物体有无和分类抓取的例程
  • QChart数据可视化
  • 转换的艺术:如何在JavaScript中序列化Set为Array、Object及逆向操作
  • 万能门店小程序管理系统存在前台任意文件上传漏洞
  • 详解Rust泛型用法
  • 移远通信携手紫光展锐,以“5G+算力”共绘万物智联新蓝图