Jump To …

deepCompare.js

module.exports = function Equals(obj1, obj2) {
    if (typeof(obj2) === 'undefined' || obj2 === null) {
        return false;
    }

    for (var p in obj1) {
        if (!obj2.hasOwnProperty(p) || (obj2[p] === undefined && obj2[p] !== obj1[p])) {
            return false;
        }
    }

    for (var p in obj1) {
        if (obj1[p]) {
            switch(typeof(obj1[p])) {
                case 'object':
                    if (!Equals(obj1[p], obj2[p])) {
                        return false;
                    }
                    break;
                default:
                    if (obj1[p] !== obj2[p]) {
                        return false;
                    }
            }
        } else {
            if (obj2[p]) {
                return false;
            }
        }
    }

    for (var p in obj2) {
        if (!obj1.hasOwnProperty(p) || (obj1[p] === undefined && obj1[p] !== obj2[p])) {
            return false;
        } else {
            if (obj2[p] !== null && typeof obj2[p] === 'object') {
                if (!Equals(obj2[p], obj1[p])){
                    return false;
                }
            }
        }
    }

    return true;
}