Modul 6 · Pelajaran 4 dari 424/32 dalam kursus~12 min
Pelajaran modul (4/4)
mengurutkan
Mengurutkan array dalam JavaScript memiliki jebakan besar: sort() memutasi array asli
dan secara default diurutkan sebagai string.
Perangkap
JS
const nums = [10, 2, 1, 20];
nums.sort();
// [1, 10, 2, 20] ← !? sorted as strings: "1" < "10" < "2"Untuk pengurutan numerik, Anda harus melewati pembanding (a, b) => number:
a - b< 0 →adiutamakana - b> 0 →bdidahulukana - b=== 0 → pesanan tidak berubah
JS
const nums = [10, 2, 1, 20];
nums.sort((a, b) => a - b);
// [1, 2, 10, 20] ← ascending order
nums.sort((a, b) => b - a);
// [20, 10, 2, 1] ← descendingMenyortir objek berdasarkan bidang
JS
const utenti = [
{ nome: 'Anna', eta: 30 },
{ nome: 'Luca', eta: 12 },
{ nome: 'Sara', eta: 18 },
];
utenti.sort((a, b) => a.eta - b.eta);
// [{Luca,12}, {Sara,18}, {Anna,30}]Untuk string Anda dapat membandingkannya dengan localeCompare:
JS
const nomi = ['Bruno', 'aurora', 'Carlo'];
nomi.sort((a, b) => a.localeCompare(b));
// ['aurora', 'Bruno', 'Carlo']Tidak memutasi yang asli
Dua pilihan:
JS
// 1) copy + sort
const copia = [...nums].sort((a, b) => a - b);
// 2) toSorted (modern, ES2023)
const ordinati = nums.toSorted((a, b) => a - b);Cobalah
Latihan#js.m6.l4.e1
Upaya: 0Memuat…
Tentukan `sortAscending(nums)`: mengembalikan salinan array BARU, yang diurutkan dalam urutan menaik sebagai angka. Yang asli tidak boleh diubah.
Memuat editor…
Tunjukkan petunjuk
[...angka].sort((a, b) => a - b)
Solusi tersedia setelah 3 upaya
Tinjau latihan
Latihan#js.m6.l4.e2
Upaya: 0Memuat…
Tentukan `sortByAgeAscending(people)`: dengan array { name, age }, kembalikan salinan baru yang diurutkan berdasarkan age ascending. Yang asli tidak boleh diubah.
Memuat editor…
Tunjukkan petunjuk
[...orang].sort((a, b) => a.usia - b.usia)
Solusi tersedia setelah 3 upaya