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?
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
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)