Maison > interface Web > js tutoriel > Comment puis-je déterminer efficacement si un objet JavaScript est vide ?

Comment puis-je déterminer efficacement si un objet JavaScript est vide ?

DDD
Libérer: 2024-12-24 14:00:19
original
612 Les gens l'ont consulté

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

Détermination du vide des objets JavaScript

Pour déterminer si un objet JavaScript est vide, diverses méthodes et considérations sont disponibles. Une approche consiste à utiliser une boucle for...in en conjonction avec Object.hasOwn (ECMA 2022). Cette boucle parcourt les propres propriétés d'un objet et renvoie false s'il en existe :

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

  return true;
}
Copier après la connexion

Une autre méthode distingue les objets vides tussen et les autres objets dépourvus de propriétés propres. Ceci peut être réalisé grâce à des vérifications de type :

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);
}
Copier après la connexion

Il est crucial de noter que la comparaison avec Object.prototype peut négliger les objets inter-domaines. De plus, Object.keys(obj).length est déconseillé car il est inefficace, nécessitant la création d'un tableau.

Pour la compatibilité avec les anciens moteurs JavaScript, Object.hasOwn peut être remplacé par Object.prototype.hasOwnProperty.call :

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

  return true;
}
Copier après la connexion

Diverses bibliothèques proposent des fonctions spécialement conçues pour vérifier les vides objets :

  • jQuery : jQuery.isEmptyObject({}) // vrai
  • Lodash : _.isEmpty({}) // vrai
  • Souligné : _ .isEmpty({}) // vrai
  • Hoek : Hoek.deepEqual({}, {}) // vrai
  • ExtJS : Ext.Object.isEmpty({}) // vrai
  • AngularJS (version 1) : angulaire.equals({}, {}) // vrai
  • Ramda : R.isEmpty({}) // vrai

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal