← Kembali ke kursus
Pelajaran kursus · JavaScript
Pelajaran 27

Array lanjutan

Sort comparator, flat, at, findLast, Array.from.

Pahami konsepnya

sort() default mengurutkan sebagai STRING — [10, 2, 1].sort() menghasilkan [1, 10, 2]! Untuk angka: sort((a, b) => a - b). Unturan objek: sort((a, b) => a.poin - b.poin). reverse() membalik di tempat.

flat(depth) meratakan array bersarang: [[1,2],[3,[4,5]]].flat(2) memberi [1,2,3,4,5]. flatMap = map + flat(1). at(index) menerima indeks negatif: arr.at(-1) memberi elemen terakhir (ES2022).

Array.from(iterable, mapFn) mengubah iterable atau array-like menjadi array sungguhan: Array.from("halo") memberi ["h","a","l","o"]. Array.of(1,2,3) membuat array dari argumen — lebih aman dari new Array(3) yang membuat array kosong panjang 3, bukan [3].

Coba contoh kode

// sort numerik
const angka = [10, 2, 1, 33, 5];
console.log(angka.sort());                 // [1,10,2,33,5] — string!
console.log([...angka].sort((a, b) => a - b));  // [1,2,5,10,33]

// sort objek
const siswa = [{ n: "Budi", p: 92 }, { n: "Ari", p: 85 }];
siswa.sort((a, b) => b.p - a.p);
console.log(siswa[0].n);  // Budi

// flat
console.log([[1, 2], [3, [4, 5]]].flat(2));  // [1,2,3,4,5]

// at
const d = [10, 20, 30];
console.log(d.at(-1));  // 30

// Array.from
console.log(Array.from("halo"));  // ["h","a","l","o"]

sort() default mengurutkan string — [10,2].sort() memberi [10,2] karena "1"<"2" secara string. Selalu sediakan comparator untuk angka. at(-1) menggantikan arr[arr.length-1].

Latihan singkat

Uji: sort siswa by poin desc — siswa[0].n harus `Budi`.