Cara mengurutkan array dengan JavaScript
Mengurutkan array dengan JavaScript sangatlah mudah, kita hanya perlu melakukan sesuatu seperti ini ['3', '2', '1'].sort() maka akan menjadi: ['1', '2', '3']. Terus, apa tujuan artikel ini dibuat?
Ternyata JavaScript tidak sesimpel itu kawan. Masalah yang sesungguhnya akan muncul ketika kamu mempunyai array seperti ini ['100', '50', '2'].sort(), dan lihatlah apa yang terjadi? Tidak seperti yang kita harapkan bukan? Hal ini dapat terjadi sebab JavaScript mengurutkan array dengan berasumsi bahwa 1 lebih kecil dari 2, 2 lebih kecil dari 5 tanpa memperhatikan angka di belakangnya terlebih dahulu.
Oleh sebab itu method sort() akan melakukan kesalahan jika digunakan untuk mengurutkan angka. Untuk memperbaiki masalah tersebut kita harus membuat fungsi pembanding seperti pada contoh di bawah ini:
var arr= ['100', '50', '2']; var sort= arr.sort(function(a, b) { return(a-b); }); console.log(sort); // 2,50,100
Apa yang baru saja kita lakukan? Untuk lebih jelasnya, yuk kita kenalan dulu dengan argumen yang dimiliki oleh sort().
Syntax
array.sort(fungsiPembanding)
Parameter
Parameter | Deskripsi |
---|---|
fungsiPembanding | (opsional) Fungsi yang digunakan sebagai urutan alternatif. Fungsi tersebut harus mengembalikan nilai negatif, positif atau nol, tergantung argumen yang diberikan. |
Pada contoh diatas kita telah berhasil mengurutkan angka dari yang terkecil ke terbesar. Bagaimana jika ingin melakukan sebaliknya? Gampang, tinggal dibalik aja variabel a-bnya seperti ini:
var arr= ['100', '50', '2']; var sort= arr.sort(function(a, b) { return(b-a); }); console.log(sort); // 100,50,2
Ada pertanyaan? Apakah cara ini akan bekerja dengan baik jika digunakan untuk mengurutkan objek berdasarkan nilai yang dimiliki oleh suatu properti? Tentu saja, dibawah ini Admin akan memberikan contoh bagaimana cara mengurutkan objek berdasarkan nilai properti yang dimilikinya. Misal kita ingin mengurutkan nilai tertinggi dari data JSON "siswa" seperti dibawah ini:
var siswa= [{"nama":"Koyama", "nilai":"71"}, {"nama":"Yamamoto", "nilai":"11"}, {"nama":"Ito", "nilai":"76"}]; var nilaiTertinggi= siswa.sort(function(a, b) { return(b.nilai-a.nilai); }); console.log(JSON.stringify(nilaiTertinggi)); // [{"nama":"Ito", "nilai":"76"}, {"nama":"Koyama", "nilai":"71"}, {"nama":"Yamamoto", "nilai":"11"}];
Tidak berbeda jauh dengan contoh sebelumnya, namun pada contoh kali ini kita melakukan sedikit modifikasi pada variabel b-a dengan menambahkan properti nilai di masing-masing variabel b dan a yang berfungsi untuk mendapatkan nilai dari setiap properti nilai yang dimiliki oleh objek siswa.
Itu tadi sedikit tapi panjang artikel tentang fungsi atau kegunaan lain dari method sort() pada JavaScript. Selamat mencoba dan semoga berhasil.