Es gibt eine raffinierte Methode, um ein Array von Objekten anhand mehrerer Eigenschaften zu sortieren:
var data = _.sortBy(array_of_objects, ['type', 'name']);
Dies gilt jedoch nur für die aufsteigende Sortierung. Gibt es eine praktische Möglichkeit, die Richtung pro Spalte zu definieren? Z.B
var data = _.sortBy(array_of_objects, [{'type': 'asc'}, {'name': 'desc'}]);
javascript
sorting
lodash
nhaa123
quelle
quelle
_.sortByOrder is not a function
neueste Version von lodash., ['asc', 'desc']
Teil wird für mich mit [email protected] einfach ignoriert. Alles ist nur aufsteigend sortiert._.sortBy
. Versuchen Sie es_.orderBy
stattdessen. Hoffe das hilft.Sie können immer verwenden
Array.prototype.reverse()
quelle
Es ist erwähnenswert, dass Sie, wenn Sie bestimmte Eigenschaften absteigend sortieren möchten, nicht einfach .reverse () am Ende anhängen möchten, da dadurch alle Sortierungen absteigend werden.
Um bestimmte Sortierungen absteigend zu machen, verketten Sie Ihre Sortierungen von niedrigstwertig bis höchstwertig und rufen Sie nach jeder Sortierung, die absteigend sein soll, .reverse () auf.
Da die Sortierung von _ eine stabile Sortierung ist, können Sie Sortierungen sicher verketten und umkehren. Wenn zwei Elemente für eine Eigenschaft denselben Wert haben, bleibt ihre Reihenfolge erhalten.
Mehr Informationen
quelle
Deep Field & Multi Field & Bestellung in verschiedene Richtungen Lodash> 4
quelle
Nein. Sie können die Sortierreihenfolge nur durch eine Rückruffunktion angeben, die den Wert umkehrt. Nicht einmal dies ist für eine mehrspaltige Sortierung möglich.
Möglicherweise können Sie dies tun
Für alles andere müssen Sie
.sort()
mit einer benutzerdefinierten Vergleichsfunktion auf den Native zurückgreifen :quelle
In der Dokumentation der Version 4.11.x heißt es: `" Diese Methode ähnelt _.sortBy, mit der Ausnahme, dass die Sortierreihenfolge der zu sortierenden Iteraten angegeben werden kann. Wenn die Reihenfolge nicht angegeben ist, werden alle Werte in aufsteigender Reihenfolge sortiert. Andernfalls Geben Sie eine Reihenfolge von "desc" für absteigend oder "asc" für aufsteigende Sortierreihenfolge der entsprechenden Werte an. " (Quelle https://lodash.com/docs/4.17.10#orderBy )
let sorted = _.orderBy(this.items, ['fieldFoo', 'fieldBar'], ['asc', 'desc'])
quelle
_.sortByOrder
?Sie können dies auch versuchen:
quelle