JSFiddle - React, Tailwind, and code Playground

by mmansion

JavaScript

var util = {
    
    isEqual: function(a,b) {
        
        for(var p in a){
            var av = a[p], bv = b[p];
            //recursion
            if (typeof(av) == 'object' || typeof(bv) == 'object' ) {
                if (this.compare(av,bv) !== true){
                    return false;
                }
            } else { //simple comparisons
                if(a[p] !== b[p]){
                    return false;
                }
            }
        }
        return true;
    },

    /**
     * Compares two objects to determine if they are identical.
     * @param {Object} o1
     * @param {Object} o2
     * @return Boolean
     */
    compare: function(o1, o2){
        //can't use json encoding in case objects contain functions - recursion will fail
        
        //can't compare non-objects
        if (!(Ext.isObject(o1) && Ext.isObject(o2))) return false;
        
        if (isEqual(o1,o2) !== true) return false;
        if (isEqual(o2,o1) !== true) return false;
        
        return true;
    }
}
    
var obj1 = {
    foo: 'bar',
    num: 2,
    'salt': ['savory', 'lick']
};

var obj2 = {
    foo: 'bar',
    num: 2,
    'salt': ['savory', 'lick']
};

document.write(util.isEqual(obj1,obj2));