Saat ini saya menggunakan underscorejs untuk mengurutkan json sorting saya. Sekarang saya telah diminta untuk melakukan ascending
dan descending
menyortir menggunakan underscore.js. Saya tidak melihat apa pun mengenai hal yang sama dalam dokumentasi. Bagaimana saya bisa mencapai ini?
javascript
underscore.js
Rahul
sumber
sumber
sortBy
fungsi Anda bisareturn -n
tetapi itu tidak akan berfungsi untuk string; maka dari itu pertanyaan tentang hal-hal seperti apa yang Anda sortir._.sortBy([1,4,3,2]).reverse()
atau_.chain([1,4,3,2]).sortBy().reverse().value()
jika Anda tidak ingin menggunakanreverse()
prototipe Array.Jawaban:
Anda dapat menggunakan
.sortBy
, itu akan selalu mengembalikan daftar naik :Tetapi Anda dapat menggunakan metode .reverse untuk mendapatkannya turun :
Atau ketika berhadapan dengan angka, tambahkan tanda negatif ke kembalinya ke daftar:
Di bawah kap
.sortBy
menggunakan built in.sort([handler])
:sumber
.sortBy()
panggilan built-inArray.sort()
, algoritma yang terserah vendor browser, tetapi semacam gelembung sangat tidak mungkin menjadi pilihan mereka._.sortBy(arr, function)
, saya menganggap itu loop atas setiap item dan menjalankan beberapa logika untuk mengembalikan array yang diurutkan. Kemudian, ketika Anda menyebutnyaArray.prototype.reverse()
mungkin mengulangi setiap item lagi dan menjalankan beberapa logika untuk mengembalikan array yang terbalik. Oleh karena itu, Anda mengulang array dua kali.Urutan menurun menggunakan garis bawah dapat dilakukan dengan mengalikan nilai kembali dengan -1.
Jika Anda mengurutkan berdasarkan string bukan angka, Anda dapat menggunakan metode charCodeAt () untuk mendapatkan nilai unicode.
sumber
The Array prototipe metode sebaliknya memodifikasi array dan kembali referensi untuk itu, yang berarti Anda dapat melakukan ini:
Juga, dokumentasi garis bawah berbunyi:
yang berarti Anda juga dapat menggunakan
.reverse()
saat merantai:sumber
_.sortBy(collection, item => item. propertyName.toLowerCase());
Mirip dengan Underscore library ada perpustakaan lain yang disebut sebagai 'lodash' yang memiliki satu metode "orderBy" yang mengambil parameter untuk menentukan di mana urutan untuk mengurutkannya. Anda bisa menggunakannya seperti
Untuk beberapa alasan, itu tidak didokumentasikan pada dokumen situs web.
sumber
orderBy
, sangat berguna! Jauh lebih baik daripada menggunakan reverse, karena mempertahankan properti sortir stabil yang saya cari.Garis Bawah Garis Bawah
Memperluas jawaban @ emil_lundberg, Anda juga dapat menulis "mixin" jika Anda menggunakan Underscore untuk membuat fungsi kustom untuk mengurutkan jika itu semacam pengurutan yang mungkin Anda ulangi dalam aplikasi di suatu tempat.
Misalnya, mungkin Anda memiliki pengontrol atau melihat hasil pengurutan dengan urutan pengurutan "ASC" atau "DESC", dan Anda ingin beralih di antara jenis itu, Anda bisa melakukan sesuatu seperti ini:
Mixin.js
Contoh Penggunaan
Inilah JSFiddle yang menunjukkan ini: JSFiddle untuk SortBy Mixin
sumber