Ich verwende derzeit Unterstriche zum Sortieren meiner JSON-Sortierung. Jetzt habe ich gebeten , eine zu tun ascending
und das descending
Sortieren mit Underscore.js. Ich sehe nichts in der Dokumentation. Wie kann ich das erreichen?
javascript
underscore.js
Rahul
quelle
quelle
sortBy
kann Ihre Funktion sein,return -n
aber das funktioniert nicht für Zeichenfolgen. daher die Frage, welche Art von Dingen Sie sortieren._.sortBy([1,4,3,2]).reverse()
oder verwenden,_.chain([1,4,3,2]).sortBy().reverse().value()
wenn Sie denreverse()
Prototyp von Array nicht verwenden möchten .Antworten:
Sie können verwenden
.sortBy
, es wird immer eine aufsteigende Liste zurückgegeben:Sie können jedoch die .reverse- Methode verwenden, um sie absteigend zu erhalten :
Oder fügen Sie beim Umgang mit Zahlen der Rückgabe ein negatives Vorzeichen hinzu, um die Liste abzuleiten:
Unter der Haube
.sortBy
verwendet die eingebaute.sort([handler])
:quelle
.sortBy()
Aufrufe enthaltenArray.sort()
, deren Algorithmus den Browsern überlassen bleibt, aber es ist ziemlich unwahrscheinlich, dass die Blasensortierung ihre Wahl ist._.sortBy(arr, function)
, gehe ich davon aus , dass es jedes Element durchläuft und eine Logik ausführt, um das sortierte Array zurückzugeben. Wenn Sie dann aufrufenArray.prototype.reverse()
, wird wahrscheinlich jedes Element erneut durchlaufen und eine Logik ausgeführt, um das umgekehrte Array zurückzugeben. Daher schleifen Sie das Array zweimal.Eine absteigende Reihenfolge mit Unterstrich kann durch Multiplizieren des Rückgabewerts mit -1 erfolgen.
Wenn Sie nach Zeichenfolgen und nicht nach Zahlen sortieren, können Sie die Methode charCodeAt () verwenden, um den Unicode-Wert abzurufen.
quelle
Die umgekehrte Methode des Array-Prototyps ändert das Array und gibt einen Verweis darauf zurück. Dies bedeutet, dass Sie Folgendes tun können:
Die Unterstreichungsdokumentation lautet außerdem:
was bedeutet, dass Sie auch
.reverse()
während der Verkettung verwenden können:quelle
_.sortBy(collection, item => item. propertyName.toLowerCase());
Ähnlich wie bei der Underscore-Bibliothek gibt es eine andere Bibliothek namens 'lodash' mit einer Methode "orderBy", die den Parameter verwendet, um zu bestimmen, in welcher Reihenfolge sie sortiert werden soll. Sie können es wie verwenden
Aus irgendeinem Grund ist es nicht in den Website-Dokumenten dokumentiert.
quelle
orderBy
, super nützlich! Viel besser als die Verwendung von umgekehrt, da die von mir gesuchte stabile Sortiereigenschaft erhalten bleibt.Unterstreichen Sie Mixins
Wenn Sie die Antwort von @ emil_lundberg erweitern, können Sie auch ein "Mixin" schreiben, wenn Sie Underscore verwenden, um eine benutzerdefinierte Funktion zum Sortieren zu erstellen, wenn es sich um eine Art Sortieren handelt, die Sie möglicherweise irgendwo in einer Anwendung wiederholen.
Wenn Sie beispielsweise einen Controller haben oder Sortierergebnisse mit der Sortierreihenfolge "ASC" oder "DESC" anzeigen und zwischen diesen Sortierungen wechseln möchten, können Sie Folgendes tun:
Mixin.js
Anwendungsbeispiel
Hier ist eine JSFiddle, die dies demonstriert: JSFiddle für SortBy Mixin
quelle