Istnieje sprytna metoda sortowania tablicy obiektów na podstawie kilku właściwości:
var data = _.sortBy(array_of_objects, ['type', 'name']);
Jednak dotyczy to tylko sortowania rosnącego. Czy jest jakiś wygodny sposób definiowania kierunku dla każdej kolumny? Na przykład
var data = _.sortBy(array_of_objects, [{'type': 'asc'}, {'name': 'desc'}]);
javascript
sorting
lodash
nhaa123
źródło
źródło
_.sortByOrder is not a function
najnowszą wersję lodash., ['asc', 'desc']
część jest dla mnie ignorowana z [email protected]. Wszystko jest po prostu posortowane rosnąco._.sortBy
. Spróbuj_.orderBy
zamiast tego. Mam nadzieję że to pomoże.Zawsze możesz użyć
Array.prototype.reverse()
źródło
Warto zauważyć, że jeśli chcesz posortować poszczególne właściwości malejąco, nie chcesz po prostu dodawać na końcu .reverse (), ponieważ spowoduje to, że wszystkie rodzaje będą malejące.
Aby poszczególne sortowania były malejące, połącz je w łańcuch od najmniej znaczących do najbardziej znaczących, wywołując .reverse () po każdym sortowaniu, które chcesz malejąco.
Ponieważ sortowanie _ jest sortowaniem stabilnym, można bezpiecznie łączyć i odwracać sortowanie, ponieważ jeśli dwa elementy mają tę samą wartość właściwości, ich kolejność jest zachowywana.
Więcej informacji
źródło
Zamawianie głębokich pól i wielu pól oraz różne kierunki Lodash> 4
źródło
Nie. Porządek sortowania nie można określić inaczej niż za pomocą funkcji zwrotnej, która odwraca wartość. Nawet to nie jest możliwe w przypadku sortowania wielokolumnowego.
Możesz to zrobić
W pozostałych przypadkach musisz skorzystać z natywnej funkcji
.sort()
z niestandardową funkcją porównania:źródło
W dokumentacji wersji 4.11.x jest napisane: `` Ta metoda jest podobna do _.sortBy, z tą różnicą, że pozwala określić porządek sortowania iteracji według kolejności sortowania. Jeśli zamówienia nie są określone, wszystkie wartości są sortowane w kolejności rosnącej. W przeciwnym razie określ kolejność „malejąco” malejąco lub „rosnąco” rosnącej kolejności sortowania odpowiednich wartości. ” (źródło https://lodash.com/docs/4.17.10#orderBy )
let sorted = _.orderBy(this.items, ['fieldFoo', 'fieldBar'], ['asc', 'desc'])
źródło
_.sortByOrder
?Możesz także spróbować tego:
źródło