Coba kasih kerjaan ke 100 karyawan: "tiap orang ambil 1 produk, kasih harga diskon 20%". Pendekatan lawas: loop manual for, hitung satu-satu. Pendekatan modern: produk.map(p => p * 0.8) — satu baris, selesai. Itu kekuatan array methods: map (transform tiap elemen), filter (saring sesuai kondisi), reduce (hitung total dari banyak elemen), dan banyak lagi. Modern JavaScript dipenuhi method ini — kuasai = naik level dari beginner ke intermediate.
🤔 Functional programming peek. Method-method ini diadopsi dari functional programming yang berusia 60+ tahun. Pattern: alih-alih nyuruh komputer "gimana caranya" (loop manual), kamu deklarasiin "apa yang kamu mau" (transform/filter). Lebih ringkas, lebih readable, lebih sedikit bug.
push()— tambah elemen di akhirpop()— hapus elemen terakhirmap()— ubah setiap elemenfilter()— saring elemen berdasarkan kondisifind()— cari elemen pertama yang cocokreduce()— gabungkan semua elemen menjadi satu nilai
const angka = [1, 2, 3, 4, 5];
const genap = angka.filter(n => n % 2 === 0); // [2, 4]
const kaliDua = angka.map(n => n * 2); // [2, 4, 6, 8, 10]
const total = angka.reduce((acc, n) => acc + n, 0); // 15
🎭 Analogi sehari-hari
Array methods = chef line di restoran:
map= chef yang ubah setiap bahan jadi masakan (bahan masuk → masakan keluar, jumlah sama).filter= sortir bahan, yang busuk dibuang (jumlah keluar bisa lebih sedikit).find= cari bahan tertentu, ambil yang pertama ketemu.reduce= blender semua bahan jadi sup (banyak input → satu output).
Setiap chef terima satu bahan, kerjakan tugasnya, kasih ke chef berikutnya. Hasilnya array baru — bahan asli tidak disentuh.
⚠️ Jebakan yang sering ditemui
map&filterreturn ARRAY BARU — array asli tetap.arr.map(...)saja tanpa simpan = sia-sia.forEachtidak return apapun — jangan chain.arr.forEach(...).map(...)= TypeError.sort()MUTATE + sort sebagai STRING by default.[10, 2, 1].sort()=[1, 10, 2](!). Pakai compare:.sort((a, b) => a - b).reducebutuh initial value — tanpa itu, elemen pertama dianggap accumulator (gampang bug).arr.reduce(fn, 0)(lebih aman).mapcallback dapat 3 arg (item, index, array).["1","2"].map(parseInt)=[1, NaN]karenaparseInt(item, index). Pakai.map(s => parseInt(s, 10)).- Tidak return di
mapcallback = array isinyaundefined. Lupareturndi multi-line callback bug klasik.
TL;DR: Array methods = jantung modern JavaScript. map transform tiap elemen (return array baru, jumlah sama). filter saring (jumlah ≤ asli). find ambil yang pertama match. reduce banyak → satu nilai (butuh initial value!). forEach loop tanpa return (gak chainable). sort() MUTATE + sort sebagai STRING default — wajib pakai compare (a, b) => a - b. Lupa return di multi-line callback = undefined bug.