如何测试空的JavaScript对象?
如何测试空的JavaScript对象?
这个问题的答案是社区的努力。编辑现有的答案来改进这篇文章。它目前不接受新的回答或交互。
在 AJAX 请求后,我的应用程序有时会返回一个空对象,如下所示:
var a = {};
如何检查这种情况?
admin 更改状态以发布 2023年5月24日
如果可以支持ECMAScript 5的支持,你可以使用Object.keys()
:
function isEmpty(obj) { return Object.keys(obj).length === 0; }
对于ES3及以前的版本,这样做没有简单的方法。你必须显式地循环遍历属性:
function isEmpty(obj) { for(var prop in obj) { if(obj.hasOwnProperty(prop)) return false; } return true; }
// because Object.keys(new Date()).length === 0; // we have to do some additional check obj // null and undefined check && Object.keys(obj).length === 0 && Object.getPrototypeOf(obj) === Object.prototype
请注意,这会创建一个不必要的数组(keys
的返回值)。
在 ECMA 5 之前:
function isEmpty(obj) { for(var prop in obj) { if(Object.prototype.hasOwnProperty.call(obj, prop)) { return false; } } return JSON.stringify(obj) === JSON.stringify({}); }
jQuery.isEmptyObject({}); // true
_.isEmpty({}); // true
_.isEmpty({}); // true
Hoek.deepEqual({}, {}); // true
Ext.Object.isEmpty({}); // true
angular.equals({}, {}); // true
R.isEmpty({}); // true