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`.