Skip to content

Instantly share code, notes, and snippets.

@musubu
Created March 26, 2012 07:13
Show Gist options
  • Save musubu/2203631 to your computer and use it in GitHub Desktop.
Save musubu/2203631 to your computer and use it in GitHub Desktop.
compare two objects in javascript
compareObjects = function(obj1, obj2, callback) {
var paramName;
var compare = function(objA, objB, param) {
var paramObjA = objA[param]
, paramObjB = (typeof objB[param] === 'undefined') ? false : objB[param];
switch (typeof objA[param]) {
case "object" : return (compareObjects(paramObjA, paramObjB));
case "function" : return (paramObjA.toString() === paramObjB.toString());
default: return (paramObjA === paramObjB);
}
}
for (paramName in obj1) {
if (typeof obj2[paramName] === 'undefined' || !compare(obj1, obj2, paramName)) {
callback(false);
return;
}
}
for (paramName in obj2) {
if (typeof obj1[paramName] === 'undefined' || !compare(obj1, obj2, paramName)) {
callback(false);
return;
}
}
callback(true);
return;
}
// USAGE
var obj1 = {attr1: 'var0', attr2: 'var2'};
var obj2 = {attr1: 'var1', attr2: 'var2'};
var obj3 = {attr1: 'var1', attr2: 'var2'};
compareObjects(obj1, obj2, function(bool) {
console.log(bool);
// false
})
compareObjects(obj2, obj3, function(bool) {
console.log(bool);
// true
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment