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

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

不言
不言avant
2019-02-25 10:29:532972parcourir

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
}
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
    }
}
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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer