首页 >web前端 >js教程 >如何有效判断JavaScript对象是否为空?

如何有效判断JavaScript对象是否为空?

DDD
DDD原创
2024-12-24 14:00:19505浏览

How Can I Effectively Determine if a JavaScript Object is Empty?

确定 JavaScript 对象是否为空

要确定 JavaScript 对象是否为空,可以使用多种方法和注意事项。一种方法涉及结合使用 for...in 循环和 Object.hasOwn (ECMA 2022 )。此循环迭代对象自身的属性,如果存在则返回 false:

function isEmpty(obj) {
  for (const prop in obj) {
    if (Object.hasOwn(obj, prop)) {
      return false;
    }
  }

  return true;
}

另一种方法区分 tussen 空对象和其他缺少自己属性的对象。这可以通过类型检查来实现:

function isEmptyObject(value) {
  if (value == null) {
    return false;
  }

  if (typeof value !== 'object') {
    return false;
  }

  const proto = Object.getPrototypeOf(value);

  if (proto !== null && proto !== Object.prototype) {
    return false;
  }

  return isEmpty(value);
}

值得注意的是,与 Object.prototype 进行比较可能会忽略跨领域对象。此外,不鼓励使用 Object.keys(obj).length,因为它效率低下,需要创建数组。

为了与旧版 JavaScript 引擎兼容,可以将 Object.hasOwn 替换为 Object.prototype.hasOwnProperty.call :

function isEmpty(obj) {
  for (var prop in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, prop)) {
      return false;
    }
  }

  return true;
}

各种库提供专门设计用于检查空的函数对象:

  • jQuery: jQuery.isEmptyObject({}) // true
  • Lodash: _.isEmpty({}) // true
  • 下划线: _ .isEmpty({}) // true
  • 霍克: Hoek.deepEqual({}, {}) // true
  • ExtJS: Ext.Object.isEmpty({}) // true
  • AngularJS (版本 1): angular.equals({ }, {}) // true
  • Ramda: R.isEmpty({}) //是的

以上是如何有效判断JavaScript对象是否为空?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn