Skip to content

Instantly share code, notes, and snippets.

@bvsatyaram
Created May 27, 2015 10:12
Show Gist options
  • Save bvsatyaram/684df0259935adf6eeb8 to your computer and use it in GitHub Desktop.
Save bvsatyaram/684df0259935adf6eeb8 to your computer and use it in GitHub Desktop.
JS Deep Equal Objects
function deepEqualObjects(a,b) {
for(var prop in a) {
if(!deepEqual(a[prop],b[prop])) {
return false;
}
}
for(var prop in b) {
if(!deepEqual(a[prop],b[prop])) {
return false;
}
}
return true;
}
function deepEqual(a, b) {
if (typeof(a) == 'object' && typeof(b) == 'object') {
return deepEqualObjects(a,b);
} else if (typeof(a) != 'object' && typeof(b) != 'object') {
return a == b;
} else {
return false;
}
}
console.log(deepEqual(1, 1));
// → true
console.log(deepEqual(1, 2));
// → false
console.log(deepEqual(1, {}));
// → false
console.log(deepEqual(1, {name: "BV"}));
// → false
console.log(deepEqual({}, {}));
// → true
console.log(deepEqual({name: "BV"}, {name: "BV"}));
// → true
console.log(deepEqual({name: "BV", age: 16}, {name: "BV"}));
// → false
console.log(deepEqual({name: "BV"}, {name: "BV", age: 16}));
// → false
console.log(deepEqual({name: "BV", age: 16}, {name: "BV", age: 16}));
// → true
console.log(deepEqual({name: "BV", age: 16}, {name: "BV", age: 17}));
// → false
var obj = {here: {is: "an"}, object: 2};
console.log(deepEqual(obj, obj));
// → true
console.log(deepEqual(obj, {here: 1, object: 2}));
// → false
console.log(deepEqual(obj, {here: {is: "an"}, object: 2}));
// → true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment