Materi
Tanpa argumen, sort mengubah setiap isi menjadi teks lalu membandingkan kode karakternya. Akibatnya angka tidak terurut sebagai angka: [10, 9, 100].sort() menghasilkan [10, 100, 9], karena teks "100" diawali "1" yang lebih kecil daripada "9". Untuk mengurutkan dengan benar, sort diberi fungsi pembanding (comparator) dengan dua parameter, a dan b.
Comparator mengembalikan angka negatif bila a harus di depan b, angka positif bila b di depan a, dan 0 bila keduanya setara. Untuk angka, a - b memberi urutan naik dan b - a urutan turun. Untuk teks, a.localeCompare(b) membandingkan dengan aturan abjad bahasa, sehingga huruf besar dan kecil diurutkan bersama; sort tanpa argumen menaruh semua huruf besar di depan huruf kecil.
const kota = [
{ nama: "Padang", jarak: 920 },
{ nama: "bogor", jarak: 60 },
{ nama: "Cirebon", jarak: 250 },
];
kota.toSorted((a, b) => a.jarak - b.jarak); // bogor, Cirebon, Padang
kota.toSorted((a, b) => a.nama.localeCompare(b.nama)); // bogor, Cirebon, Padang
kota.map((k) => k.nama).sort(); // ["Cirebon", "Padang", "bogor"]sort mengubah array aslinya di tempat dan mengembalikan array yang sama. Bila urutan asli masih dipakai di bagian lain, misalnya daftar yang ditampilkan sesuai urutan input, pakai toSorted yang mengembalikan array baru. Sejak ECMAScript 2019, sort dijamin stabil: isi yang dinilai setara tetap dalam urutan semula, sehingga mengurutkan per kota lalu per nama tidak mengacak urutan sebelumnya.