Überprüfen der Objektgleichheit

JavaScriptJavaScriptBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir das Konzept der Objektgleichheit in JavaScript erkunden. Wir werden lernen, wie man einen tiefen Vergleich zwischen zwei Werten durchführt, um zu bestimmen, ob sie gleichwertig sind, indem verschiedene Techniken verwendet werden, wie das Überprüfen, ob die Werte identisch sind, das Überprüfen, ob es sich um nicht-Objektwerte mit einem gleichwertigen Wert handelt, und das Verwenden von Object.keys(), um zu überprüfen, ob beide Werte die gleiche Anzahl von Schlüsseln haben. Wir werden auch verstehen, wie man Rekursion verwendet, um geschachtelte Objekte zu vergleichen.


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{{"Überprüfen der Objektgleichheit"}} javascript/data_types -.-> lab-28261{{"Überprüfen der Objektgleichheit"}} javascript/arith_ops -.-> lab-28261{{"Überprüfen der Objektgleichheit"}} javascript/comp_ops -.-> lab-28261{{"Überprüfen der Objektgleichheit"}} javascript/cond_stmts -.-> lab-28261{{"Überprüfen der Objektgleichheit"}} javascript/array_methods -.-> lab-28261{{"Überprüfen der Objektgleichheit"}} javascript/proto_inherit -.-> lab-28261{{"Überprüfen der Objektgleichheit"}} javascript/destr_assign -.-> lab-28261{{"Überprüfen der Objektgleichheit"}} end

Wie man in JavaScript die Objektgleichheit überprüft

Um zu überprüfen, ob zwei Werte gleichwertig sind, folgen Sie diesen Schritten:

  1. Öffnen Sie das Terminal/SSH und geben Sie node ein, um mit der Codeausführung zu beginnen.
  2. Führen Sie einen tiefen Vergleich zwischen den beiden Werten mit der equals()-Funktion durch.
  3. Überprüfen Sie, ob die beiden Werte identisch sind. Wenn ja, geben Sie true zurück.
  4. Überprüfen Sie, ob beide Werte Date-Objekte mit der gleichen Zeit sind, indem Sie Date.prototype.getTime() verwenden. Wenn ja, geben Sie true zurück.
  5. Überprüfen Sie, ob beide Werte nicht-Objektwerte mit einem gleichwertigen Wert sind (strenger Vergleich). Wenn ja, geben Sie true zurück.
  6. Überprüfen Sie, ob nur ein Wert null oder undefined ist oder ob ihre Prototypen unterschiedlich sind. Wenn ja, geben Sie false zurück.
  7. Wenn keine der obigen Bedingungen zutrifft, verwenden Sie Object.keys(), um zu überprüfen, ob beide Werte die gleiche Anzahl von Schlüsseln haben.
  8. Verwenden Sie Array.prototype.every(), um zu überprüfen, ob jeder Schlüssel in a in b existiert und ob sie rekursiv durch Aufruf von equals() gleichwertig sind.

Verwenden Sie den folgenden Code, um die equals()-Funktion zu implementieren:

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]));
};

Verwenden Sie die folgenden Codebeispiele, um die equals()-Funktion zu testen:

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

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab "Überprüfen der Objektgleichheit" abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.