You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何判断对象的属性值是否为空对象?

判断对象是否为空的几种实现方案

嘿,这个需求很常见,我来给你分享几种靠谱的实现方式,你可以根据自己的运行环境和场景来选择:

方法1:使用Object.keys()(推荐,现代浏览器)

这是最简洁高效的方案,现代浏览器(包括ES5及以上环境)都支持:

var obj = {newData : {}};

// 直接写if条件,返回布尔值
const isEmpty = Object.keys(obj.newData).length === 0;
console.log(isEmpty); // 输出 true

原理说明

Object.keys()会返回一个包含对象自身可枚举属性的数组,如果目标是空对象,这个数组的长度就是0,直接判断长度就能得出结果。绝大多数业务场景下,这个方法完全够用。

方法2:兼容旧环境的for-in循环方案

如果你的代码需要兼容IE8及这类旧环境,Object.keys()不支持,那就可以用for-in循环配合hasOwnProperty()来判断:

var obj = {newData : {}};

// 先写一个工具函数
function isEmptyObject(target) {
  for (var key in target) {
    // 只检查对象自身的属性,排除继承来的属性
    if (target.hasOwnProperty(key)) {
      return false;
    }
  }
  return true;
}

// 调用工具函数做判断
const isEmpty = isEmptyObject(obj.newData);
console.log(isEmpty); // 输出 true

原理说明

遍历对象的所有属性,只要找到一个属于对象自身的属性,就说明它不是空对象,直接返回false;如果遍历完都没找到,就返回true。这个方法兼容性拉满,但代码量稍多一点。

方法3:慎用JSON.stringify()

还有一种看起来简单的写法,但不推荐在严谨场景使用:

var obj = {newData : {}};

const isEmpty = JSON.stringify(obj.newData) === '{}';
console.log(isEmpty); // 输出 true

为什么不推荐?

如果对象里包含undefined、函数或者循环引用这类特殊值,JSON.stringify()会把它们忽略或者报错,导致误判。比如{a: undefined}经过JSON.stringify()后也会变成{},但实际上这个对象并不是空的。


内容的提问来源于stack exchange,提问作者Bhaurao Birajdar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:08:28