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.
Beachten Sie den folgenden Codeausschnitt:
var set = new Set(); set.add({a:1}); set.add({a:1}); console.log([...set.values()]); // Array [ Object, Object ]
Soweit Sie können Sehen Sie, obwohl beide Objekte die gleichen Eigenschaften und Werte haben, werden sie aufgrund der Referenzgleichheit als unterschiedlich betrachtet.
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.
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!