Lewati ke konten

Array: sort

Setelah halaman ini, kamu dapat mengurutkan array bertipe string secara alfabetis dan array bertipe number secara numerik dengan fungsi perbandingan bawaan.


Daftar siswa sering harus diurutkan berdasarkan abjad A–Z agar mudah dicari. Nilai ujian siswa perlu diurutkan dari yang tertinggi ke terendah untuk menentukan peringkat. Kita menggunakan method .sort() untuk mengurutkan data.


Method sort() tanpa parameter mengurutkan elemen sebagai teks/string secara alfabetis bawaan:

📄 TypeScript
const siswa = ["Budi", "Andi"]
siswa.sort() // ["Andi", "Budi"]

Secara bawaan, sort() mengonversi angka menjadi string sebelum diurutkan. Akibatnya, angka 10 akan diletakkan sebelum 2 (karena huruf “1” sebelum “2” dalam kamus).

Untuk mengurutkan angka dengan benar, kita wajib memberikan fungsi perbandingan (compare function):

📄 TypeScript
// Urutkan angka dari kecil ke besar (Ascending)
angka.sort((a, b) => a - b)
// Urutkan angka dari besar ke kecil (Descending)
angka.sort((a, b) => b - a)

sort() adalah method mutable — ia langsung mengubah posisi elemen dalam array asli.


Guru mengurutkan lembar jawaban siswa:

  • Secara alfabetis: nama Andi ditaruh paling atas, diikuti Budi, Citra, dst.
  • Secara numerik: menumpuk lembar jawaban berdasarkan nilai, membandingkan dua lembar sekaligus untuk meletakkan yang lebih kecil di bawah.

🖥️ Output
Perbandingan Angka: (a, b) => a - b
Membandingkan 20 dan 5:
a = 20, b = 5
a - b = 15 (positif) ──► tukar posisi! (5 diletakkan sebelum 20)
Hasil urutan: 5, 20

Buat src/bab5/sort.ts:

📄 TypeScript
// 1. Mengurutkan String (Alfabetis)
const daftarSiswa: string[] = ["Citra", "Andi", "Dian", "Budi"]
console.log("Awal siswa:", daftarSiswa)
daftarSiswa.sort()
console.log("Sort siswa:", daftarSiswa)
// 2. Mengurutkan Angka (Salah tanpa compare function)
const nilaiSalah: number[] = [10, 2, 30, 5, 100]
nilaiSalah.sort()
console.log("\nSort salah:", nilaiSalah) // Output aneh!
// 3. Mengurutkan Angka (Benar dengan compare function)
const nilaiBenar: number[] = [10, 2, 30, 5, 100]
// Kecil ke besar (Ascending)
nilaiBenar.sort((a, b) => a - b)
console.log("Ascending :", nilaiBenar)
// Besar ke kecil (Descending)
nilaiBenar.sort((a, b) => b - a)
console.log("Descending:", nilaiBenar)

Jalankan:

🖥️ Output
tsx src/bab5/sort.ts
🖥️ Output
Awal siswa: [ 'Citra', 'Andi', 'Dian', 'Budi' ]
Sort siswa: [ 'Andi', 'Budi', 'Citra', 'Dian' ]
Sort salah: [ 10, 100, 2, 30, 5 ]
Ascending : [ 2, 5, 10, 30, 100 ]
Descending: [ 100, 30, 10, 5, 2 ]

  • daftarSiswa.sort() — string otomatis diurutkan A–Z dengan benar.
  • nilaiSalah.sort() — menghasilkan urutan salah karena 100 dianggap lebih dulu dari 2 (karakter pertama “1” < “2”).
  • nilaiBenar.sort((a, b) => a - b) — jika a - b menghasilkan angka negatif, a diletakkan sebelum b. Jika positif, b sebelum a. Ini rumus standar mengurutkan angka dari kecil ke besar.

❌ Mengurutkan array angka tanpa compare function

Section titled “❌ Mengurutkan array angka tanpa compare function”

Kesalahan ini sangat sering terjadi dan sulit dideteksi karena tidak menghasilkan pesan error, tetapi membuat urutan angka menjadi rusak secara logika.

Perbaikan: Selalu tulis (a, b) => a - b saat mengurutkan angka.



Buat array berisi 6 nilai ujian secara acak. Urutkan nilai tersebut dari yang tertinggi ke terendah (descending) dan tampilkan hasilnya di terminal.


  • sort() mengurutkan elemen array asli (mutable).
  • String otomatis diurutkan secara alfabetis (A-Z).
  • Angka wajib menggunakan compare function: (a, b) => a - b (kecil-besar) atau (a, b) => b - a (besar-kecil).