Obecnie używam znaków podkreślenia do sortowania plików JSON. Teraz poprosiłem o wykonanie ascending
i descending
sortowanie przy użyciu podkreślenia.js. Nie widzę w dokumentacji nic o tym samym. Jak mogę to osiągnąć?
javascript
underscore.js
Rahul
źródło
źródło
sortBy
funkcja może być,return -n
ale to nie zadziała w przypadku łańcuchów; stąd pytanie, jakie rzeczy sortujesz._.sortBy([1,4,3,2]).reverse()
lub_.chain([1,4,3,2]).sortBy().reverse().value()
jeśli nie chcesz używaćreverse()
prototypu Array.Odpowiedzi:
Możesz użyć
.sortBy
, zawsze zwróci listę rosnącą :Ale możesz użyć metody .reverse , aby uzyskać malejąco :
Lub w przypadku liczb dodaj znak minus do powrotu, aby zejść z listy:
Pod maską
.sortBy
zastosowano wbudowane.sort([handler])
:źródło
.sortBy()
Wbudowane wywołania pod maskąArray.sort()
, których algorytm zależy od dostawców przeglądarek, ale sortowanie bąbelkowe raczej nie będzie ich wyborem._.sortBy(arr, function)
, zakładam, że zapętla się nad każdym elementem i wykonuje jakąś logikę, aby zwrócić posortowaną tablicę. Następnie, gdy wywołaszArray.prototype.reverse()
to, prawdopodobnie ponownie zapętli się nad każdym elementem i wykonuje jakąś logikę, aby zwrócić odwróconą tablicę. Dlatego dwukrotnie zapętlasz tablicę.Porządek malejący za pomocą podkreślenia można wykonać, mnożąc zwracaną wartość przez -1.
Jeśli sortujesz według ciągów, a nie liczb, możesz użyć metody charCodeAt (), aby uzyskać wartość Unicode.
źródło
Tego prototypu Array metoda odwróconej modyfikuje tablicy i zwraca referencję do niego, co oznacza, że można to zrobić:
Ponadto dokumentacja z podkreśleniem czyta:
co oznacza, że możesz również użyć
.reverse()
podczas łączenia:źródło
_.sortBy(collection, item => item. propertyName.toLowerCase());
Podobnie jak w przypadku biblioteki Underscore, istnieje inna biblioteka o nazwie „lodash”, która ma jedną metodę „orderBy”, która pobiera parametr w celu określenia kolejności sortowania. Możesz go używać jak
Z jakiegoś powodu nie jest to udokumentowane w dokumentacji witryny.
źródło
orderBy
, super przydatne! Znacznie lepsze niż używanie odwrócenia, ponieważ zachowuje stabilną właściwość sortowania, której szukam.Mixins podkreślenia
Rozszerzając odpowiedź @ emil_lundberg, możesz również napisać „mixin”, jeśli używasz podkreślenia, aby utworzyć niestandardową funkcję do sortowania, jeśli jest to rodzaj sortowania, który możesz powtórzyć w jakiejś aplikacji.
Na przykład, być może masz kontroler lub widok sortowania wyników z porządkiem sortowania „ASC” lub „DESC” i chcesz przełączać się między tym sortowaniem, możesz zrobić coś takiego:
Mixin.js
Przykład użycia
Oto JSFiddle demonstrujący to: JSFiddle dla SortBy Mixin
źródło