Obecnie używam underscore do sortowania mojego sortowania json. Teraz poprosiłem o sortowanie ascending
i descending
przy użyciu pliku underscore.js. W dokumentacji nie widzę niczego podobnego. Jak mogę to osiągnąć?Jak mogę wykonać asc i desc sort przy użyciu pliku underscore.js?
Odpowiedz
Można użyć .sortBy
, to zawsze zwracać rosnąco listę:
_.sortBy([2, 3, 1], function(num) {
return num;
}); // [1, 2, 3]
Ale można użyć metody .reverse dostać to malejąco:
var array = _.sortBy([2, 3, 1], function(num) {
return num;
});
console.log(array); // [1, 2, 3]
console.log(array.reverse()); // [3, 2, 1]
Albo gdy mamy do czynienia z liczbami dodać znak ujemny do powrotu, aby zejść z listy:
_.sortBy([-3, -2, 2, 3, 1, 0, -1], function(num) {
return -num;
}); // [3, 2, 1, 0, -1, -2, -3]
Pod maską .sortBy
wykorzystuje wbudowany w .sort([handler])
:
// Default is ascending:
[2, 3, 1].sort(); // [1, 2, 3]
// But can be descending if you provide a sort handler:
[2, 3, 1].sort(function(a, b) {
// a = current item in array
// b = next item in array
return b - a;
});
Ostatnie rozwiązanie tj. Dodanie znaku negetycznego do zwróconej wartości jest idealne. – vinesh
Dlaczego uważasz, że to rodzaj bąbelków? Pod maską '.sortBy()' wywołuje wbudowane 'Array.sort()', którego algorytm zależy od dostawców przeglądarek, ale sortowanie bąbelkowe raczej nie będzie ich wyborem. –
Czy to nie zwiększa złożoności czasu? Powoduje, że lista jest sortowana dwukrotnie. – user1477388
kolejności malejącej przy użyciu podkreślenia można zrobić poprzez pomnożenie wartości zwracanej przez -1.
//Ascending Order:
_.sortBy([2, 3, 1], function(num){
return num;
}); // [1, 2, 3]
//Descending Order:
_.sortBy([2, 3, 1], function(num){
return num * -1;
}); // [3, 2, 1]
Jeśli sortując nie ciągów liczb, można użyć metody charCodeAt(), aby uzyskać wartość Unicode.
//Descending Order Strings:
_.sortBy(['a', 'b', 'c'], function(s){
return s.charCodeAt() * -1;
});
Próbuję posortować alfabetycznie - pomnożenie przez -1 nie jest ważna operacja. :) – rythos42
Jest to warty użycia przypadek użycia, ale nie określono w pytaniu. Jednak mnożenie ciągu przez -1 jest poprawną operacją. Zwraca wartość NaN, która jest poprawnym wynikiem. – jEremyB
+1, aby uniknąć operacji 'array.reverse' –
Array prototype's reverse method modyfikuje tablicę i zwraca referencję do niego, co oznacza, że można to zrobić:
var sortedAsc = _.sortBy(collection, 'propertyName');
var sortedDesc = _.sortBy(collection, 'propertyName').reverse();
Również dokumentacja podkreślenia brzmi:
Ponadto Array prototype's methods są wyświetlane za pośrednictwem przyklejonego obiektu podkreślenia, więc możesz wsunąć do łańcucha łańcuch
reverse
lubpush
i kontynuować modyfikowanie tablicy.
co oznacza, można również użyć .reverse()
podczas łączenia:
var sortedDescAndFiltered = _.chain(collection).sortBy('propertyName').reverse().filter(_.property('isGood')).value();
To jest opłata za najprostszą metodę sortowania wstecznego/malejąco, jeśli chodzi o najprostsze przypadki użycia. –
Aby uzyskać sortowanie alfabetyczne bez rozróżniania wielkości liter: '_.sortBy (kolekcja, element => element. PropertyName.toLowerCase());' –
to nie działa, jeśli w tablicy znajdują się liczby ujemne. –
Podobny podkreślić biblioteki istnieje inna biblioteka nazywa się „lodash”, który ma jedną metodę „orderby”, który trwa w parametrze do określenia w jakiej kolejności go posortować. Możesz go używać tak, jak z pewnej przyczyny nie jest to udokumentowane w dokumentach witryny z pewnymi przyczynami, jak np.
_.orderBy('collection', 'propertyName', 'desc')
Myślę, że pomyliłeś [podkreślenie] (http://underscorejs.org/) z [lodash] (https://lodash.com/). Tylko ta ostatnia ma wspomnianą funkcję [orderBy] (https://lodash.com/docs/latest#orderBy). –
Tak, moje złe. Zaktualizuje odpowiedź. Dzięki za poprawianie :) –
'orderBy', super przydatne! Znacznie lepiej niż przy użyciu reverse, ponieważ zachowuje on właściwość stabilnego sortowania, której szukam. – Flimm
- 1. Używanie zmiennych dla ASC i desc w kolejności przez
- 2. DESC i ASC jako parametr w procedurze przechowywanej
- 3. Oracle dynamiczne DESC i ASC w kolejności według
- 4. DataView.Sort - więcej niż tylko asc/desc (potrzebujesz niestandardowego sortowania)
- 5. case dla klauzuli ORDER BY z wielu kolumn i Desc/Asc Sortuj
- 6. przy użyciu funkcji memoize z underscore.js
- 7. Najlepszy sposób implementowania asc sortowania lub desc w szynach
- 8. Warunkowo SQL ORDER BY ASC/DESC dla alfa kolumn
- 9. Serwer SQL: indeks klastrowany na datetime, ASC lub DESC
- 10. sortowania std :: list przy użyciu std :: sort
- 11. Jak wykonać minimalną instalację przy użyciu Bowera
- 12. Serwer sql kolejność odwrotna po użyciu desc
- 13. Szyjka butelki na operację SORT
- 14. W GORM findBy * zapytania, w jaki sposób mogę korzystać z „sort” przed ograniczeniem przy użyciu „max”
- 15. Jak wykonać pojedyncze logowanie przy użyciu NodeJS?
- 16. Zamów kolekcję jako DESC
- 17. Jak mogę wykonać testy w trybie debugowania przy użyciu .Net Core i VSCode?
- 18. Sort-Object i Integers
- 19. Zapytanie MySQL przy użyciu fileort i tymczasowego
- 20. Aktualizacja pliku XML przy użyciu Qt DOM
- 21. Jak mogę policzyć wystąpienia ciągu w pliku przy użyciu bash?
- 22. Jak wykonać polecenie w NodeJS przy użyciu środowiska użytkownika?
- 23. Jak wykonać kwerendę przy użyciu wielu warunków w IndexedDB?
- 24. Jak przenieść obiekt w underscore.js
- 25. Jak zmienić nazwę pliku przy użyciu NSFileManager
- 26. Jak wykonać komputerową bazę 2 przy użyciu operatorów bitowych?
- 27. Jak wykonać szyfrowanie i deszyfrowanie pliku?
- 28. Pobieranie pliku przy użyciu selenu
- 29. Przesyłanie pliku ASP.NET WebApi przy użyciu kreatora i rozszerzenia pliku
- 30. Jak opróżnić pliku przy użyciu Pythona
Dodaj przykład sortowania i sposobu. – Jon
Co sortujesz? Liczby? Smyczki? Daktyle? Coś innego? –
@muistooshort Sortuję tablicę obiektów. Tak więc metoda sortBoy pasuje do moich kryteriów idealnie do sortowania rosnącego, ale nie odwrotnie. – Rahul