Anpassung der Objektgleichheit in JavaScript-Sets
Kontext:
Im ES6-Set-Objekt von JavaScript ist Gleichheit wird durch den ===-Operator bestimmt, der Objektreferenzen vergleicht. Dieser Ansatz eignet sich nicht für den tiefgreifenden Vergleich von Objekten.
Frage:
Wie können wir die Objektgleichheit in Set-Objekten anpassen, um tiefe Objektvergleiche ähnlich der Methode equal(Object) von Java zu ermöglichen?
Antwort:
Update (März 2022):
Es ist ein Vorschlag zur Einführung von Records und Tuples im Gange, bei denen es sich um unveränderliche Strukturen handelt, die einen direkten Vergleich ermöglichen nach Wert statt nach Referenz. Dies würde sich auf Set- und Map-Objekte erstrecken und wichtige Vergleiche/Suchen basierend auf dem Objektinhalt ermöglichen.
Ursprüngliche Antwort:
Dem ES6-Set-Objekt fehlen anpassbare Vergleichsmethoden. Es ist nicht möglich, die Methoden .has(), .add() und .delete() zu erweitern, um tiefe Objektvergleiche durchzuführen.
Versuch, ein benutzerdefiniertes Objekt von Set abzuleiten und die oben genannten Methoden mit deep zu überschreiben Die Vergleichslogik würde aufgrund der mangelnden Unterstützung durch das zugrunde liegende Set-Objekt zu einer schlechten Leistung führen und eine Brute-Force-Iteration erfordern, um Übereinstimmungen zu finden.
Wie in der ES6-Spezifikation erwähnt, wurde die Funktion zum Konfigurieren des Gleichheitsvergleichs in Sets geändert aufgrund von Umsetzungsschwierigkeiten verschoben. Es wird empfohlen, primitive Werte oder unveränderliche Wertobjekte auf Gleichheit in Sets zu vergleichen, da sie in JavaScript standardmäßig nach Wert verglichen werden.
Das obige ist der detaillierte Inhalt vonWie kann ich die Objektgleichheit in JavaScript-Sets für umfassende Vergleiche anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!