JS Array Sorting
Pelajari cara mengurutkan array di JavaScript dengan berbagai metode dan teknik pengurutan.
JavaScript Sorting Arrays untuk Pemula
Pengurutan (sorting) adalah operasi penting dalam pemrograman, yang memungkinkan kita menyusun data secara teratur. JavaScript menyediakan beberapa metode bawaan untuk mengurutkan array dengan mudah dan efisien.
Mengapa Kita Butuh Pengurutan Array? 🤔
Array yang tidak terurut sulit untuk:
- Dianalisis dan dipahami oleh pengguna
- Dicari dengan efisien
- Diproses dalam algoritma tertentu
- Ditampilkan dalam antarmuka pengguna
Pengurutan membuat data lebih mudah diakses, dibaca, dan diolah!
1. Metode sort() Dasar
Penjelasan:
sort()
mengurutkan elemen array dan mengubah array asli (mutating method)- Secara default,
sort()
mengurutkan elemen sebagai string - String diurutkan berdasarkan nilai karakter UTF-16
- Untuk array string, hasilnya umumnya sesuai urutan alfabetis
- Untuk array angka, hasilnya sering tidak sesuai harapan karena diurutkan sebagai string
⚠️ Perhatian: Secara default, [1, 10, 100, 25, 40, 5]
diurutkan menjadi [1, 10, 100, 25, 40, 5]
karena "10" lebih kecil dari "5" dalam perbandingan string.
2. Mengurutkan Array Angka dengan Benar
Penjelasan:
- Untuk mengurutkan angka dengan benar, kita perlu memberikan "compare function"
- Compare function menerima dua argumen (a dan b) dan menentukan urutan mereka:
- Jika hasilnya negatif, a ditempatkan sebelum b
- Jika hasilnya positif, a ditempatkan setelah b
- Jika hasilnya 0, urutan a dan b tidak berubah
a - b
menghasilkan urutan naik (ascending)b - a
menghasilkan urutan turun (descending)
✨ Keunggulan: Dengan compare function, kita bisa menentukan logika pengurutan kustom.
3. Mengurutkan Array Objek
Penjelasan:
- Untuk mengurutkan array objek, kita perlu membandingkan properti tertentu dari objek
- Untuk properti numerik seperti "nilai", kita bisa gunakan pengurangan sederhana
- Untuk properti string seperti "nama", kita punya dua opsi:
- Membandingkan string secara manual dengan if-else
- Menggunakan metode
localeCompare()
yang lebih bersih dan mendukung bahasa internasional
✅ Tip: localeCompare()
sangat berguna untuk pengurutan teks dalam aplikasi multibahasa.
4. Metode reverse()
Penjelasan:
reverse()
membalik urutan elemen dalam array- Seperti
sort()
,reverse()
juga mengubah array asli (mutating method) - Kombinasi
sort()
danreverse()
bisa digunakan untuk pengurutan terbalik - Untuk pengurutan numerik descending,
sort((a, b) => b - a)
lebih efisien
5. Menyimpan Array Asli (Sorting tanpa Mutasi)
Penjelasan:
sort()
danreverse()
mengubah array asli, yang bisa jadi tidak diinginkan- Ada beberapa cara untuk mengurutkan tanpa mengubah array asli:
- Menggunakan spread operator
[...array]
- Menggunakan
slice()
tanpa argumen untuk membuat salinan - Menggunakan
Array.from(array)
- Menggunakan spread operator
- Pendekatan ini penting dalam pemrograman fungsional dan ketika perlu mempertahankan data asli
6. Mengurutkan String dengan Sensitivitas Karakter
Penjelasan:
- Pengurutan string default bersifat case-sensitive, huruf kapital muncul lebih dulu
- Untuk pengurutan case-insensitive, kita bisa mengonversi string ke lowercase/uppercase
localeCompare()
dapat menerima parameter tambahan:- Locale identifier (seperti 'en', 'id', 'es')
- Opsi seperti
{ sensitivity: 'base' }
untuk mengabaikan aksen dan kapitalisasi
✨ Keunggulan: localeCompare()
memungkinkan pengurutan yang benar untuk berbagai bahasa dan karakter khusus.
7. Algoritma Pengurutan Khusus
Penjelasan:
- Kita bisa mengimplementasikan algoritma pengurutan khusus sesuai kebutuhan
- Fisher-Yates shuffle adalah algoritma standar untuk mengacak array
- Algoritma pengurutan berdasarkan kedekatan menunjukkan fleksibilitas compare function
- Destructuring assignment
[a, b] = [b, a]
adalah cara modern untuk swap nilai di JavaScript
8. Performa dan Implementasi sort()
Penjelasan:
- Implementasi
sort()
di berbagai browser bisa berbeda- Beberapa menggunakan QuickSort, InsertionSort, MergeSort, atau kombinasi
- Performa bisa berbeda tergantung jumlah dan jenis data
- Compare function bisa sangat kompleks untuk logika pengurutan khusus
- Gunakan
console.time()
danconsole.timeEnd()
untuk mengukur performa pengurutan
⚠️ Perhatian: Untuk dataset yang sangat besar, performa pengurutan bisa menjadi masalah penting.
9. Contoh Nyata: Mengurutkan Data Produk E-commerce
Penjelasan:
Contoh di atas menunjukkan bagaimana pengurutan dapat diterapkan dalam skenario e-commerce:
- Pengurutan berdasarkan harga untuk pencarian produk termurah/termahal
- Pengurutan berdasarkan rating untuk menampilkan produk terpopuler
- Pengurutan kompleks untuk rekomendasi yang memprioritaskan ketersediaan dan rating
- Pengurutan alfabetis untuk kemudahan navigasi
Perhatikan bahwa setiap fungsi membuat salinan array untuk menghindari mutasi array asli, sehingga data produk asli tetap tidak berubah.
10. Tips untuk Pengurutan Array
✅ Lakukan:
- Gunakan compare function untuk mengurutkan angka atau objek
- Pertimbangkan
localeCompare()
untuk pengurutan string multibahasa - Buat salinan array jika ingin mempertahankan urutan asli
- Gunakan
toSorted()
(jika browser mendukung) untuk pengurutan non-mutasi - Tulis compare function yang jelas dan ringkas
❌ Hindari:
- Jangan gunakan
sort()
tanpa compare function untuk array angka - Hindari compare function yang kompleks dan sulit dibaca
- Jangan mengandalkan urutan pengurutan untuk elemen yang sama nilainya (tidak stabil)
- Jangan lupa bahwa
sort()
mengubah array asli
Latihan Singkat
Pertanyaan 1:
Apa output dari kode berikut?
Petunjuk: Ingat bagaimana sort()
bekerja secara default.
Jawaban: Output adalah [1, 10, 2, 5, 8]
(diurutkan sebagai string, bukan angka)
Pertanyaan 2:
Bagaimana cara mengurutkan array objek berikut berdasarkan umur dari yang tertua ke termuda?
Petunjuk: Gunakan compare function yang tepat.
Jawaban: