JavaScript: verificare se due oggetti sono uguali

JavaScript: verificare se due oggetti sono uguali

JavaScript non dispone ancora di un metodo nativo per stabilire se due oggetti sono uguali. Possiamo tuttavia estendere l'oggetto base Object con un metodo ad hoc. Vediamo come.

Il seguente metodo analizza tutte le proprietà dell'oggetto di paragone per verificare se i due oggetti sono uguali:


if (typeof Object.prototype.equals !== 'function') {
    Object.prototype.equals = function(x) {
        for (p in this) {
            switch (typeof(this[p])) {
            case 'object':
                if (!this[p].equals(x[p])) {
                    return false;
                }
                break;
            case 'function':
                if (typeof(x[p]) == 'undefined' || (p != 'equals' && this[p].toString() != x[p].toString())) {
                    return false;
                }
                break;
            default:
                if (this[p] != x[p]) {
                    return false;
                }
            }
        }

        for (p in x) {
            if (typeof(this[p]) == 'undefined') {
                return false;
            }
        }

        return true;
    }
}

Esempi:


var A = {
	foo: 'Test',
	bar: true
};

var B = {
	foo: 'Test',
	bar: true
};

var C = {
	baz: false,
	bar: true
};

console.log(A.equals(B)); // true
console.log(A.equals(C)); // false

Torna su