Skip to content

Instantly share code, notes, and snippets.

@peterschussheim
Created September 10, 2016 23:00
Show Gist options
  • Save peterschussheim/78da558fe74e1494fc4fcb8687bcfeca to your computer and use it in GitHub Desktop.
Save peterschussheim/78da558fe74e1494fc4fcb8687bcfeca to your computer and use it in GitHub Desktop.
deepEqual
// deepEqual :: (Object, Object) -> Boolean
function deepEqual(a, b) {
if (a === b) {
return true;
}
if (a == null || typeof a != "object" || b == null || typeof b != "object") {
return false;
}
var propsInA = 0;
var propsInB = 0;
for (var prop in a) {
propsInA += 1;
}
for (var prop in b) {
propsInB += 1;
if (!(prop in a) || !deepEqual(a[prop], b[prop])) {
return false;
}
}
return propsInA == propsInB;
}
var obj = {here: {is: "an"}, object: 2};
deepEqual(obj, obj);
deepEqual(obj, {here: 1, object: 2});
deepEqual(obj, {here: {is: "an"}, object: 2});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment