Mögliches Duplikat:
einfachste Weg, doppelte Werte in einem Javascript-Array zu finden
Wie überprüfe ich, ob ein Array doppelte Werte hat?
Wenn einige Elemente im Array identisch sind, geben Sie true zurück. Andernfalls geben Sie false zurück.
['hello','goodbye','hey'] //return false because no duplicates exist
['hello','goodbye','hello'] // return true because duplicates exist
Beachten Sie, dass es mir egal ist, die Duplizierung zu finden. Ich möchte nur ein boolesches Ergebnis, wenn Arrays Duplikate enthalten.
javascript
duplicates
user847495
quelle
quelle
var test=['hello','goodbye','hello'] ; if ( test.length != _.unique(test).length ) { // some code }
Antworten:
Wenn Sie eine ES2015-Umgebung haben (zum jetzigen Zeitpunkt: io.js, IE11, Chrome, Firefox, WebKit pro Nacht), funktioniert Folgendes und ist schnell (nämlich O (n)):
Wenn Sie nur Zeichenfolgenwerte im Array benötigen, funktioniert Folgendes:
Wir verwenden eine "Hash-Tabelle",
valuesSoFar
deren Schlüssel die Werte sind, die wir bisher im Array gesehen haben. Wir führen eine Suche durchin
, um festzustellen , ob dieser Wert bereits erkannt wurde. Wenn ja, verlassen wir die Schleife und kehren zurücktrue
.Wenn Sie eine Funktion benötigen, die nicht nur für Zeichenfolgenwerte funktioniert, funktioniert Folgendes, ist jedoch nicht so performant. es ist O (n 2 ) anstelle von O (n).
Der Unterschied besteht einfach darin, dass wir ein Array anstelle einer Hash-Tabelle für verwenden
valuesSoFar
, da JavaScript- "Hash-Tabellen" (dh Objekte) nur Zeichenfolgenschlüssel haben. Dies bedeutet, dass wir die O (1) -Suchzeit von verlierenin
und stattdessen eine O (n) -Nachschlagzeit von erhaltenindexOf
.quelle
hasDuplicates
, sollte sie prüfen, ob die Größe des Sets während des Castings tatsächlich geschrumpft ist, oder? Daher sollte der boolesche Operator sein!==
und nicht===
true
für das folgende Array zurück:[1, '1']
Ein anderer Ansatz (auch für Objekt- / Array-Elemente innerhalb des Arrays 1 ) könnte 2 sein :
Siehe auch...
1 benötigt einen Browser, der JSON unterstützt, oder eine JSON-Bibliothek, wenn nicht.
2 edit: Die Funktion kann jetzt zur einfachen Überprüfung oder zur Rückgabe eines Arrays doppelter Werte verwendet werden
quelle
null
,NaN
,Infinity
,+Infinity
, und-Infinity
; 3) Objekte gelten als gleich, wenn sie dieselben eigenen Eigenschaften haben, auch wenn sie unterschiedliche Prototypen haben.Nun, ich habe ein bisschen im Internet nach dir gesucht und diesen praktischen Link gefunden.
Der einfachste Weg, doppelte Werte in einem JavaScript-Array zu finden
Sie können den im obigen Link angegebenen Beispielcode mit freundlicher Genehmigung von "swilliams" an Ihre Lösung anpassen.
quelle