Introducción
En este laboratorio, exploraremos el concepto de igualdad de objetos en JavaScript. Aprenderemos cómo realizar una comparación profunda entre dos valores para determinar si son equivalentes utilizando varias técnicas, como comprobar si los valores son idénticos, comprobar si son valores no objeto con un valor equivalente y utilizar Object.keys() para comprobar si ambos valores tienen el mismo número de claves. También entenderemos cómo utilizar la recursividad para comparar objetos anidados.
Cómo comprobar la igualdad de objetos en JavaScript
Para comprobar si dos valores son equivalentes, siga estos pasos:
- Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación. - Realice una comparación profunda entre los dos valores utilizando la función
equals(). - Compruebe si los dos valores son idénticos. Si es así, devuelva
true. - Compruebe si ambos valores son objetos
Datecon la misma hora, utilizandoDate.prototype.getTime(). Si es así, devuelvatrue. - Compruebe si ambos valores son valores no objeto con un valor equivalente (comparación estricta). Si es así, devuelva
true. - Compruebe si solo un valor es
nulloundefinedo si sus prototipos son diferentes. Si es así, devuelvafalse. - Si ninguna de las condiciones anteriores se cumple, utilice
Object.keys()para comprobar si ambos valores tienen el mismo número de claves. - Utilice
Array.prototype.every()para comprobar si cada clave enaexiste enby si son equivalentes llamando recursivamente aequals().
Utilice el siguiente código para implementar la función equals():
const equals = (a, b) => {
if (a === b) return true;
if (a instanceof Date && b instanceof Date)
return a.getTime() === b.getTime();
if (!a || !b || (typeof a !== "object" && typeof b !== "object"))
return a === b;
if (a.prototype !== b.prototype) return false;
const keys = Object.keys(a);
if (keys.length !== Object.keys(b).length) return false;
return keys.every((k) => equals(a[k], b[k]));
};
Utilice los siguientes ejemplos de código para probar la función equals():
equals(
{ a: [2, { e: 3 }], b: [4], c: "foo" },
{ a: [2, { e: 3 }], b: [4], c: "foo" }
); // true
equals([1, 2, 3], { 0: 1, 1: 2, 2: 3 }); // true
Resumen
¡Felicidades! Has completado el laboratorio de Comprobar la Igualdad de Objetos. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.