如何测试空的JavaScript对象?

43 浏览
0 Comments

如何测试空的JavaScript对象?

这个问题的答案是社区的努力。编辑现有的答案来改进这篇文章。它目前不接受新的回答或交互。

在 AJAX 请求后,我的应用程序有时会返回一个空对象,如下所示:

var a = {};

如何检查这种情况?

admin 更改状态以发布 2023年5月24日
0
0 Comments

如果可以支持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;
}

0
0 Comments

ECMA 5+

// 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

jQuery.isEmptyObject({}); // true

lodash

_.isEmpty({}); // true

Underscore

_.isEmpty({}); // true

Hoek

Hoek.deepEqual({}, {}); // true

ExtJS

Ext.Object.isEmpty({}); // true

AngularJS(版本 1)

angular.equals({}, {}); // true

Ramda

R.isEmpty({}); // true

0