Duplicata possible:
Comparaison d'objets en JavaScript
Existe-t-il une méthode qui prend 2 objets JSON et compare les 2 pour voir si des données ont changé?
Modifier
Après avoir examiné les commentaires, des éclaircissements sont nécessaires.
Un objet JSON est défini comme
"un ensemble non ordonné de paires nom/valeur. Un objet commence par {(accolade gauche) et se termine par} (accolade droite). Chaque nom est suivi de: (deux points) et les paires nom/valeur sont séparées par, (virgule) . " - json.org
Mon objectif est de pouvoir comparer 2 littéraux d'objets JSON, tout simplement.
Je ne suis pas un gourou javascript donc si, en javascript, ce sont des littéraux d'objets, alors je suppose que c'est comme ça que je devrais les appeler.
Je crois que ce que je recherche, c'est une méthode capable de:
Il ne suffit pas d'analyser le JSON et de comparer les deux objets, car il ne s'agirait pas exactement des mêmes références d'objet (mais il pourrait s'agir des mêmes valeurs).
Vous devez faire un profond égal.
De http://threebit.net/mail-archive/Rails-spinoffs/msg06156.html - qui semble utiliser jQuery.
Object.extend(Object, {
deepEquals: function(o1, o2) {
var k1 = Object.keys(o1).sort();
var k2 = Object.keys(o2).sort();
if (k1.length != k2.length) return false;
return k1.Zip(k2, function(keyPair) {
if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){
return deepEquals(o1[keyPair[0]], o2[keyPair[1]])
} else {
return o1[keyPair[0]] == o2[keyPair[1]];
}
}).all();
}
});
Usage:
var anObj = JSON.parse(jsonString1);
var anotherObj= JSON.parse(jsonString2);
if (Object.deepEquals(anObj, anotherObj))
...