Comprobar la igualdad de objetos

JavaScriptJavaScriptBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/proto_inherit("Prototypes and Inheritance") javascript/AdvancedConceptsGroup -.-> javascript/destr_assign("Destructuring Assignment") subgraph Lab Skills javascript/variables -.-> lab-28261{{"Comprobar la igualdad de objetos"}} javascript/data_types -.-> lab-28261{{"Comprobar la igualdad de objetos"}} javascript/arith_ops -.-> lab-28261{{"Comprobar la igualdad de objetos"}} javascript/comp_ops -.-> lab-28261{{"Comprobar la igualdad de objetos"}} javascript/cond_stmts -.-> lab-28261{{"Comprobar la igualdad de objetos"}} javascript/array_methods -.-> lab-28261{{"Comprobar la igualdad de objetos"}} javascript/proto_inherit -.-> lab-28261{{"Comprobar la igualdad de objetos"}} javascript/destr_assign -.-> lab-28261{{"Comprobar la igualdad de objetos"}} end

Cómo comprobar la igualdad de objetos en JavaScript

Para comprobar si dos valores son equivalentes, siga estos pasos:

  1. Abra la Terminal/SSH y escriba node para comenzar a practicar la codificación.
  2. Realice una comparación profunda entre los dos valores utilizando la función equals().
  3. Compruebe si los dos valores son idénticos. Si es así, devuelva true.
  4. Compruebe si ambos valores son objetos Date con la misma hora, utilizando Date.prototype.getTime(). Si es así, devuelva true.
  5. Compruebe si ambos valores son valores no objeto con un valor equivalente (comparación estricta). Si es así, devuelva true.
  6. Compruebe si solo un valor es null o undefined o si sus prototipos son diferentes. Si es así, devuelva false.
  7. Si ninguna de las condiciones anteriores se cumple, utilice Object.keys() para comprobar si ambos valores tienen el mismo número de claves.
  8. Utilice Array.prototype.every() para comprobar si cada clave en a existe en b y si son equivalentes llamando recursivamente a equals().

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.