web-dev-qa-db-fra.com

Utiliser underscore.js pour comparer deux objets

J'essaie de comparer deux objets avec soulignement.

Objet 1 (Filtre)

{
  "tuxedoorsuit":"tuxedoorsuit-tuxedo",
  "occasions":"occasions-wedding"
}

Objet 2 (Propriétés)

{
  "tuxedoorsuit":"tuxedoorsuit-tuxedo",
  "occasions":"occasions-wedding",
  "occasions":"occasions-prom",
  "product_fit":"product_fit-slim",
  "colorfamily":"colorfamily-black"
}

Je souhaite renvoyer la valeur true lorsque tous les éléments de l'objet 1 se trouvent dans l'objet 2. Quelle serait la meilleure méthode de soulignement de soulignement à utiliser pour cela?

14
Casey

Pour comparer deux objets à l'aide de underscore.js

 **isEqual :** _.isEqual(object, other) 

Effectue une comparaison approfondie optimisée entre les deux objets afin de déterminer s'ils doivent être considérés comme égaux.

Ex: 

var stooge = {name: 'moe', luckyNumbers: [13, 27, 34]};
    var clone  = {name: 'moe', luckyNumbers: [13, 27, 34]};
     _.isEqual(stooge, clone)  
      Returns True
7
pradeep gowda

Basé sur la fonction précédente créée, fonction de consolidation simple:

var compareMe = function (obj1, obj2, parentKey) {
  parentKey = parentKey || '';
  _.each(_.keys(obj1), function (key) {
    if(_.isObject(obj1[key]) ) {
        compareMe(obj1[key], obj2[key], parentKey + key + '.')
    } else {
        if (!_.has(obj2, key) || !_.isEqual(obj1[key], obj2[key])) {
            console.log(parentKey + key, obj1[key], obj2[key]);
        }
    }
  })
};

Et appelez comme: compareMe (obj1, obj1)

0
Dmitri Algazin