Heim > Web-Frontend > js-Tutorial > Wie kann ich einen umfassenden Gleichheitsvergleich für Elemente in einem JavaScript-Set-Objekt erreichen?

Wie kann ich einen umfassenden Gleichheitsvergleich für Elemente in einem JavaScript-Set-Objekt erreichen?

Barbara Streisand
Freigeben: 2024-11-12 05:28:02
Original
388 Leute haben es durchsucht

How Can I Achieve Deep Equality Comparison for Elements in a JavaScript Set Object?

Anpassen der Gleichheit für JavaScript-Set-Objekte

In ES6 (Harmony) führt das neue Set-Objekt Referenzgleichheit für seine Elemente ein. Dieses Verhalten eignet sich jedoch möglicherweise nicht immer für einen umfassenden Vergleich von Objekten.

Unbeabsichtigtes Verhalten bei Objektgleichheit:

Beachten Sie den folgenden Codeausschnitt:

var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]
Nach dem Login kopieren

Soweit Sie können Sehen Sie, obwohl beide Objekte die gleichen Eigenschaften und Werte haben, werden sie aufgrund der Referenzgleichheit als unterschiedlich betrachtet.

Benutzerdefinierter Vergleich für Set-Objekte:

Leider bietet das ES6-Set-Objekt keinen Build -in Methoden zum Anpassen von Gleichheitsvergleichen. Eine Erweiterung, um die Vergleichslogik zu überschreiben, wäre ebenfalls eine Herausforderung.

Mögliche Problemumgehung:

Obwohl ein benutzerdefinierter Vergleich für Set-Objekte nicht direkt unterstützt wird, können Sie die Verwendung einer alternativen Datenstruktur oder -technik in Betracht ziehen:

1. Unveränderliche Wertobjekte:

Der in der Antwort erwähnte Artikel schlägt die Verwendung unveränderlicher Wertobjekte vor, die es dem Set ermöglichen würden, einen tiefen Wertevergleich zu verwenden. Dies ist jedoch derzeit kein Standard in JavaScript.

2. Benutzerdefinierte Datenstruktur mit tiefem Vergleich:

Sie können Ihre eigene benutzerdefinierte Datenstruktur erstellen, die von Set erbt und die Methoden überschreibt, die die Objektidentität verwenden. Dies würde jedoch eine vollständige Neufassung der Set-Implementierung erfordern, was für große Mengen nicht effizient wäre.

Das obige ist der detaillierte Inhalt vonWie kann ich einen umfassenden Gleichheitsvergleich für Elemente in einem JavaScript-Set-Objekt erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage