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

在js中判断对象是空对象的几种方法

  1. 使用 Object.keys() 方法
    Object.keys() 方法返回对象自身的可枚举属性名称组成的数组。如果数组的长度为 0,那么对象是空的。
function isEmptyObject(obj) {return Object.keys(obj).length === 0 && obj.constructor === Object;
}const obj1 = {};
const obj2 = { a: 1 };console.log(isEmptyObject(obj1)); // true
console.log(isEmptyObject(obj2)); // false
  1. 使用 for…in 循环
    for…in 循环用于遍历对象的可枚举属性。如果循环没有执行,说明对象是空的。
function isEmptyObject(obj) {for (let key in obj) {if (obj.hasOwnProperty(key)) {return false;}}return obj.constructor === Object;
}const obj1 = {};
const obj2 = { a: 1 };console.log(isEmptyObject(obj1)); // true
console.log(isEmptyObject(obj2)); // false
  1. 使用 JSON.stringify() 方法
    可以将对象转换为 JSON 字符串,然后判断字符串是否等于 ‘{}’。
function isEmptyObject(obj) {return JSON.stringify(obj) === '{}' && obj.constructor === Object;
}const obj1 = {};
const obj2 = { a: 1 };console.log(isEmptyObject(obj1)); // true
console.log(isEmptyObject(obj2)); // false
  1. 使用 Object.entries() 方法
    Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组。如果数组长度为0,则对象是空的。
function isEmptyObject(obj) {return Object.entries(obj).length === 0 && obj.constructor === Object;
}const obj1 = {};
const obj2 = { a: 1 };console.log(isEmptyObject(obj1)); // true
console.log(isEmptyObject(obj2)); // false
  1. 验证对象的构造函数
    在判断对象是否为空时,可以附加检查对象的构造函数是否为 Object。这可以避免在对象可能是由其他构造函数创建的情况下出现错误判断。
function isEmptyObject(obj) {return obj && obj.constructor === Object && Object.keys(obj).length === 0;
}const obj1 = {};
const obj2 = new Date();console.log(isEmptyObject(obj1)); // true
console.log(isEmptyObject(obj2)); // false (Date is not a plain object)

总结

这些方法可以有效地判断一个对象是否为空对象。你可以根据具体需求选择合适的判断方法。最常用的是 Object.keys(obj).length === 0,因为它简洁且性能较好。

http://www.lryc.cn/news/427838.html

相关文章:

  • 【整理】后端接口设计和优化相关思路汇总
  • docker 部署 sql server
  • 微信云开发云存储 下载全部文件
  • 1、巡线功能实现(7路数字循迹)
  • 来了...腾讯内推的软件测试面试PDF 文档(共107页)
  • Android大脑--systemserver进程
  • python项目部署:Nginx和UWSGI认识
  • 【区块链+金融服务】农业大宗供应链线上融资平台 | FISCO BCOS应用案例
  • 2025ICASSP Author Guidelines
  • Openstack 所需要的共享服务组件及核心组件
  • 解密Linux中的通用块层:加速存储系统,提升系统性能
  • 浅析国有商业银行人力资源数字化平台建设
  • 微信h5跳转消息页关注公众号,关注按钮闪一下消失
  • 掌握PyTorch的加权随机采样:WeightedRandomSampler全解析
  • 网络丢包深度解析:影响、原因及优化策略
  • Hadoop入门基础(一):深入探索Hadoop内部处理流程与核心三剑客
  • 【扒代码】dave.py
  • 一个人真正的成熟,体现在这六个字上
  • 【已成功EI检索】第五届新材料与清洁能源国际学术会议(ICAMCE 2024)
  • 介绍Python `AsyncIterable` 的使用方法和使用场景
  • 抖音直播间通过星图风车跳转到微信小程序
  • idea 修改背景图片教程
  • PWN练习---Stack_2
  • springCloudAlibaba整合log4j2
  • 你是如何克服编程学习中的挫折感的
  • C++观察者模式:订阅博主~
  • 1-安装Elasticsearch
  • EmguCV学习笔记 VB.Net 4.2 二值化
  • Spark大数据分析案例
  • 【数据结构】关于Java对象比较,以及优先级队列的大小堆创建你了解多少???