Maison > interface Web > js tutoriel > Comment comparer deux objets pour l'égalité en JavaScript

Comment comparer deux objets pour l'égalité en JavaScript

不言
Libérer: 2019-02-25 10:29:53
avant
2997 Les gens l'ont consulté

Ce que cet article vous apporte concerne la méthode de comparaison de deux objets pour l'égalité en JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

C'est une question qui m'a été posée par l'intervieweur lors d'un entretien

Dans cette question d'entretien,

Égal : fait référence au nombre d'attributs de l'objet. 🎜>
Il y a deux obj comme celui-ci

let obj1 = {
    name:'李德华',
    age:18,
    price:NaN
}

let obj2 = {
    name:'张德华',
    age:18,
    price:NaN
}
Copier après la connexion
Une solution à laquelle je peux penser

function compare(obj1,obj2){
    if(Object.keys(obj1).length != Object.keys(obj2).length){
      return false
    }else{
      for(key in obj1){
        if(obj2.hasOwnProperty(key)){
            if( !Object.is(obj1[key],obj2[key])){
                return false;
            }
        }else{
          return false
        }
      }
      return true
    }
}
Copier après la connexion
En pensant au processus de solution

  • Puisque l'obj n'a pas de longueur, je ne peux le convertir en tableau que via Object.keys()

  • Entrez dans la deuxième étape pour vérifier si les attributs de l'objet existent dans un autre obj . Object.hasOwnProperty() est utilisé ici pour comparer uniquement les propriétés de l'objet (pour empêcher obj d'hériter des propriétés du parent)

  • porte la base de la deuxième étape pour comparer les valeurs des propriétés. Object.is() dans ES6 pour éviter le problème de NaN différent de lui-même

ou utilisez _.isEqual

dans Underscore.js

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!

Étiquettes associées:
source:segmentfault.com
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