Urutin Data dengan Mudah Pakai Array.sort() di JavaScript
Mengurutkan data di JavaScript gak perlu ribet! Kalau kamu sering kerja dengan array, pasti ada saatnya butuh ngurutkan data—entah itu angka, string, atau objek. Nah, di sinilah sort()
jadi penyelamat.
Fungsi sort()
memungkinkan kita mengurutkan elemen dalam array secara mudah, baik ascending (A-Z, 0-9) maupun descending (Z-A, 9-0).
Yuk, kita bahas gimana cara pakainya dengan contoh biar makin paham!
Cara Kerja sort()
Secara default, sort()
mengubah elemen array menjadi string dan mengurutkannya berdasarkan urutan alfabet. Ini mungkin bermasalah untuk angka, tapi jangan khawatir, kita bisa atasi dengan callback function.
Sintaks Dasar
array.sort([compareFunction]);
- Tanpa
compareFunction
→ Mengurutkan berdasarkan alfabet. - Dengan
compareFunction
→ Mengurutkan berdasarkan logika yang kita tentukan.
Contoh sort()
Tanpa Callback
1. Mengurutkan Array String
let nama = ["Zara", "Andi", "Budi", "Citra"];
nama.sort();
console.log(nama);
Output:
["Andi", "Budi", "Citra", "Zara"]
✅ sort()
bekerja sempurna untuk string karena secara default mengurutkan alfabet.
2. Mengurutkan Array Angka (TAPI ERROR!)
let angka = [100, 25, 10, 5, 1];
angka.sort();
console.log(angka);
Output:
[1, 10, 100, 25, 5]
❌ Salah! Kenapa? Karena sort()
mengonversi angka menjadi string sebelum mengurutkan. Akibatnya, "100" dianggap lebih kecil dari "25" karena dilihat dari karakter pertama.
Solusinya? Pakai compare function!
Menggunakan compareFunction
untuk Angka
Mengurutkan Angka dengan Benar
let angka = [100, 25, 10, 5, 1];
// Urutkan dari kecil ke besar
angka.sort((a, b) => a - b);
console.log(angka);
Output:
[1, 5, 10, 25, 100]
Cara Kerja a - b
dalam sort()
- Jika
a - b
hasilnya negatif (a < b
), makaa
ditempatkan lebih dulu. - Jika
a - b
hasilnya positif (a > b
), makab
ditempatkan lebih dulu. - Jika
a - b
hasilnya 0, maka urutan tetap.
Mengurutkan dari Besar ke Kecil
let angka = [100, 25, 10, 5, 1];
// Urutkan dari besar ke kecil
angka.sort((a, b) => b - a);
console.log(angka);
Output:
[100, 25, 10, 5, 1]
Mengurutkan Array Objek
Misalkan kita punya daftar produk dengan nama dan harga, dan kita ingin mengurutkannya berdasarkan harga.
let produk = [
{ nama: "Mouse", harga: 50000 },
{ nama: "Keyboard", harga: 150000 },
{ nama: "Monitor", harga: 2000000 }
];
// Urutkan dari harga termurah ke termahal
produk.sort((a, b) => a.harga - b.harga);
console.log(produk);
Output:
[
{ "nama": "Mouse", "harga": 50000 },
{ "nama": "Keyboard", "harga": 150000 },
{ "nama": "Monitor", "harga": 2000000 }
]
Kalau mau urutkan dari yang paling mahal, tinggal balik:
produk.sort((a, b) => b.harga - a.harga);
Mengurutkan dengan Huruf Besar dan Kecil (Case Insensitive)
Kadang ada data string campur huruf besar dan kecil yang bisa bikin pengurutan tidak sesuai harapan.
Contoh masalahnya:
let nama = ["Zara", "andi", "Budi", "citra"];
nama.sort();
console.log(nama);
Output:
["Budi", "Zara", "andi", "citra"]
❌ Kenapa "andi" dan "citra" di urutan akhir? Karena huruf kecil lebih besar daripada huruf besar dalam Unicode.
Solusi:
nama.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
console.log(nama);
Output:
["andi", "Budi", "citra", "Zara"]
✅ Sekarang urutannya benar!
Kesimpulan
Metode | Fungsi |
---|---|
sort() |
Mengurutkan array berdasarkan alfabet (default) |
sort((a, b) => a - b) |
Mengurutkan angka dari kecil ke besar |
sort((a, b) => b - a) |
Mengurutkan angka dari besar ke kecil |
sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())) |
Mengurutkan string tanpa peduli huruf besar/kecil |
sort((a, b) => a.harga - b.harga) |
Mengurutkan array objek berdasarkan harga |
Jadi, kalau butuh mengurutkan data di array, pakai sort()
dengan compare function yang sesuai biar hasilnya benar!