Wie erstelle ich eine Liste einzigartiger Elemente in JavaScript?

8

In meiner CouchDB Reduce-Funktion muss ich eine Liste von Elementen auf die eindeutigen reduzieren.

Hinweis: In diesem Fall ist es in Ordnung, eine Liste zu haben, es wird eine kleine Anzahl von Elementen vom Typ String sein.

Mein aktueller Weg besteht darin, Schlüssel eines Objekts zu setzen und dann die Schlüssel dieses Objekts zurückzugeben Seit dem Ort kann der Code Dinge wie _.uniq nicht benutzen.

Ich würde gerne eine elegantere Art finden, es zu buchstabieren als dies.

%Vor%     
Ronny 27.07.2012, 13:26
quelle

5 Antworten

19

Im Allgemeinen ist der von Ihnen gewählte Ansatz eine gute Idee. Aber ich könnte eine Lösung vorschlagen, die den Algorithmus viel schneller macht.

%Vor%

Wie Sie sehen können, haben wir hier nur eine Schleife.

Ich habe ein Beispiel erstellt, das sowohl Ihre als auch meine Lösungen testet. Versuche damit zu spielen.

    
Eugene Naydenov 11.08.2012, 02:59
quelle
8

Eine Alternative, die für kleine Listen geeignet ist, wäre die Unix-Befehlszeilenmethode von sort | uniq :

%Vor%

Diese Funktion sortiert das Argument und filtert dann das Ergebnis, um alle Elemente auszulassen, die ihrem Vorgänger entsprechen.

Der schlüsselbasierte Ansatz ist in Ordnung und wird bessere Leistungsmerkmale für eine große Anzahl von Elementen aufweisen (O (n) zum Einfügen von n Elementen in eine Hashtabelle im Vergleich zu O (n log n) zum Sortieren des Arrays). Dies ist jedoch auf kleinen Listen wahrscheinlich nicht zu bemerken. Darüber hinaus könnten Sie diese Version ändern, um bei Bedarf eine andere Sortier- oder Gleichheitsfunktion zu verwenden. Mit Hash-Schlüsseln bleiben Sie bei JavaScripts der Idee der Schlüsselgleichheit verhaftet.

    
Rob Hague 01.07.2015 10:37
quelle
0

Das ist eine alte Frage, ich weiß. Bei einigen Google-Suchen steht es jedoch oben. Daher möchte ich hinzufügen, dass Sie die Antworten von @RobHague und @EugeneNaydenov mit den folgenden Elementen kombinieren können:

%Vor%

Sie können auch undefinierte Werte (oft nützlich) ignorieren, indem Sie Folgendes hinzufügen:

%Vor%

Sie können mit dieser Lösung hier spielen: Ссылка

    
rwblackburn 21.07.2017 18:10
quelle
0

Wenn Sie Object.keys verwenden, erhalten Sie Strings, wenn Sie ganzzahlige Argumente eingeben (uniq ([1,2,3]) = & gt; ['1', '2', '3']. Hier ist eins mit Array. reduzieren:

%Vor%     
JW Buitenhuis 05.08.2017 16:20
quelle
-2

Was ist mit

? %Vor%     
Suche Ganbaatar 11.09.2014 18:07
quelle

Tags und Links