要检查 javascript 对象是否为空,核心是判断其是否有可枚举的自身属性。1. 使用 object.keys(obj).length === 0 是最直接高效的方法,适用于大多数场景;2. 若需忽略继承属性,应结合 for...in 与 hasownproperty() 遍历判断;3. 不推荐使用 json.stringify(obj) === '{}',因其在属性值为 undefined、function 或存在循环引用时可能误判或抛出错误,效率也较低。最终推荐优先使用 object.keys() 方法进行判断,以完整句结束。

要检查 JavaScript 对象是否为空,核心在于判断对象是否包含任何可枚举的属性。
解决方案:
最直接的方法是使用
Object.keys()
Object.keys(obj)
function isEmptyObject(obj) {
return Object.keys(obj).length === 0;
}
// 示例
const emptyObj = {};
const nonEmptyObj = { a: 1 };
console.log(isEmptyObject(emptyObj)); // 输出: true
console.log(isEmptyObject(nonEmptyObj)); // 输出: false为什么不直接用
obj == {}obj === {}==
===
false
如何处理继承的属性?
如果需要忽略继承的属性,只考虑对象自身定义的属性,可以使用
hasOwnProperty()
for...in
function isEmptyObjectOwnProperties(obj) {
for (let prop in obj) {
if (obj.hasOwnProperty(prop)) {
return false; // 找到自身属性,对象不为空
}
}
return true; // 没有找到自身属性,对象为空
}
// 示例
const parent = { inheritedProp: 'inherited' };
const child = Object.create(parent);
console.log(isEmptyObjectOwnProperties(child)); // 输出: true (因为 child 对象自身没有属性)
child.ownProp = 'own';
console.log(isEmptyObjectOwnProperties(child)); // 输出: false使用
JSON.stringify()
理论上,
JSON.stringify({})" {}"" {}"JSON.stringify()
undefined
function
symbol
function isEmptyObjectStringify(obj) {
try {
return JSON.stringify(obj) === '{}';
} catch (error) {
return false; // 处理循环引用等错误
}
}
// 示例
const objWithUndefined = { a: undefined };
console.log(isEmptyObjectStringify(objWithUndefined)); // 输出: true (因为 undefined 属性被忽略)
const objWithFunction = { b: function() {} };
console.log(isEmptyObjectStringify(objWithFunction)); // 输出: true (因为 function 属性被忽略)总结:首选
Object.keys()
hasOwnProperty()
for...in
JSON.stringify()
以上就是js 如何检查对象是否为空的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号