Dasar Array — JavaScript

Coba simpen daftar 5 nama temen di JavaScript pake variabel terpisah: nama1, nama2, nama3, nama4, nama5. Berantakan, susah loop. Solusinya: array — satu variabe

Coba simpen daftar 5 nama temen di JavaScript pake variabel terpisah: nama1, nama2, nama3, nama4, nama5. Berantakan, susah loop. Solusinya: array — satu variabel yang nyimpen kumpulan nilai berurutan, diakses lewat nomor urut (index). Array adalah salah satu struktur data paling penting di programming. Hampir semua yang kamu lihat di internet (list produk, daftar follower, history chat) dasarnya array.

💡 Index dimulai dari 0, bukan 1. Bukan typo, bukan bug — sengaja. Index sebenernya itu "jarak dari awal array". Item pertama jaraknya 0 dari awal, item kedua jaraknya 1, dst. Awalnya weird buat pemula, tapi ini standar di semua bahasa pemrograman utama (Python, Java, C, dll). Hafalin: arr[0] = item pertama.

const buah = ["apel", "mangga", "jeruk"];

console.log(buah[0]);        // "apel"
console.log(buah[1]);        // "mangga"
console.log(buah[2]);        // "jeruk"
console.log(buah[99]);       // undefined (index tidak ada)

Panjang array dengan .length:

const angka = [10, 20, 30];
console.log(angka.length);   // 3

// Akses elemen terakhir:
console.log(angka[angka.length - 1]);  // 30

Menambah elemen di akhir — push():

const daftar = ["apel"];
daftar.push("mangga");
daftar.push("jeruk");
console.log(daftar);         // ["apel", "mangga", "jeruk"]
console.log(daftar.length);  // 3

Menghapus elemen terakhir — pop():

const angka = [1, 2, 3];
const terakhir = angka.pop();
console.log(terakhir);       // 3 (yang dihapus)
console.log(angka);          // [1, 2]

Mengecek keberadaan elemen — includes():

const nama = ["Ani", "Budi", "Citra"];
console.log(nama.includes("Budi"));   // true
console.log(nama.includes("Dodi"));   // false

Iterasi dengan for loop:

const warna = ["merah", "hijau", "biru"];
for (let i = 0; i < warna.length; i++) {
  console.log(i, warna[i]);
}
// 0 merah
// 1 hijau
// 2 biru

Ringkasan operasi dasar yang wajib kamu kuasai:

Operasi Contoh Kegunaan
Indexing arr[0] Akses elemen berdasarkan posisi
length arr.length Jumlah elemen
push(x) arr.push("x") Tambah di akhir
pop() arr.pop() Hapus dari akhir
includes(x) arr.includes("x") Cek keberadaan

Setelah kamu nyaman dengan operasi-operasi ini, lesson berikutnya akan memperkenalkan method yang lebih canggih: map, filter, dan reduce.

🎭 Analogi sehari-hari

Array = rak buku berurutan dengan nomor di tiap slot. Slot pertama bernomor 0 (bukan 1!), karena di JS rak dihitung dari "jarak ke awal rak" — slot pertama jaraknya 0.

[0] [1] [2] [3]
"apel" "mangga" "jeruk" "duku"

push() = taruh buku baru di ujung kanan. pop() = ambil yang paling kanan. length = total buku di rak.

⚠️ Jebakan yang sering ditemui

🎯 Tambah/hapus elemen — pilih method mana?

  • Tambah di AKHIRarr.push(x) (mutate) atau [...arr, x] (immutable)
  • Tambah di AWALarr.unshift(x) (mutate) atau [x, ...arr] (immutable)
  • Hapus AKHIRarr.pop() (mutate, return elemen)
  • Hapus AWALarr.shift() (mutate, return elemen)
  • Hapus di INDEX tertentuarr.splice(i, 1) (mutate) atau arr.filter((_, idx) => idx !== i) (immutable)
  • Sambung dua array[...a, ...b] atau a.concat(b) (immutable)

Aturan modern (React/Redux): AVOID mutate array yang dipake di state. Pakai spread ([...arr, x]) atau method non-mutate (filter, map, concat, slice, toReversed(), toSorted()). Mutate bikin React gak detect change → re-render gak jalan.

TL;DR: Array = list ordered, akses pakai index 0-based (arr[0]). arr.length cek panjang. Method dasar: push/pop (akhir), unshift/shift (awal), slice (potong, gak mutate), splice (potong + insert, MUTATE), includes/indexOf (cari). Array di-pass by reference (b = a = alias, bukan copy). Untuk state React/Redux: HINDARI mutate, pakai spread ([...arr, x]) atau non-mutate method.

Yang akan kamu pelajari