Maison > interface Web > js tutoriel > Comment comparer des tableaux et des objets pour l'égalité en JavaScript ?

Comment comparer des tableaux et des objets pour l'égalité en JavaScript ?

Patricia Arquette
Libérer: 2024-12-23 18:30:10
original
848 Les gens l'ont consulté

How Do I Compare Arrays and Objects for Equality in JavaScript?

Comparaison des tableaux pour l'égalité en JavaScript

Identifier l'égalité des tableaux en JavaScript peut être une tâche difficile. L'opérateur de comparaison typique, ==, ne suffira pas dans ce scénario. Au lieu de cela, nous plongeons dans le domaine de la comparaison d'objets, qui nécessite une approche plus nuancée.

Comparaison de tableaux à l'aide d'une boucle

La méthode simple pour comparer des tableaux consiste à parcourir leurs éléments et à vérifier leur égalité. Voici comment procéder :

Array.prototype.equals = function (array) {
  if (!array) return false;
  if (this === array) return true;
  if (this.length !== array.length) return false;

  for (let i = 0, l = this.length; i < l; i++) {
    if (this[i] instanceof Array && array[i] instanceof Array) {
      if (!this[i].equals(array[i])) return false;
    } else if (this[i] !== array[i]) return false;
  }
  return true;
};
Copier après la connexion

Comparer des objets

Les objets présentent un défi unique lors de la comparaison. Deux instances d'objet, même avec des propriétés identiques, ne seront jamais considérées comme égales en raison de leurs instances de classe distinctes. Cependant, si l'accent est uniquement mis sur la comparaison de données, cela est toujours possible :

Object.prototype.equals = function (object2) {
  for (const propName in this) {
    if (this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName)) return false;
    if (typeof this[propName] !== typeof object2[propName]) return false;
  }

  for (const propName in object2) {
    if (this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName)) return false;
    if (typeof this[propName] !== typeof object2[propName]) return false;
    if (!this.hasOwnProperty(propName)) continue;

    if (this[propName] instanceof Array && object2[propName] instanceof Array) {
      if (!this[propName].equals(object2[propName])) return false;
    } else if (this[propName] instanceof Object && object2[propName] instanceof Object) {
      if (!this[propName].equals(object2[propName])) return false;
    } else if (this[propName] !== object2[propName]) {
      return false;
    }
  }

  return true;
};
Copier après la connexion

Tableaux imbriqués

Pour les tableaux imbriqués, les fonctions de Samy Bencherif fournissent une méthode efficace pour rechercher et comparer des objets spécifiques. dans des tableaux multidimensionnels : https://jsfiddle.net/SamyBencherif/8352y6yw/.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal