- Bab 5 dari 12
- 35 menit
- 1 latihan kode
- 4 soal kuis
Array dan Object
Di bab ini (10 bagian)
Tujuan bab ini
- Membuat array, mengakses elemennya, dan mengubahnya dengan
push,pop,shift,unshift,slice, dansplice. - Mengolah array dengan
map,filter,reduce,find, danincludes. - Membuat object, mengakses propertinya dengan titik atau kurung, serta menambah dan menghapus properti.
- Mengolah array of objects, bentuk data yang paling sering kamu temui di aplikasi nyata.
Array: daftar yang berurutan
Array adalah wadah untuk banyak nilai sekaligus, disimpan berurutan. Anggap seperti playlist: setiap lagu punya nomor urut, dan nomor urut pertama adalah 0, bukan 1.
Array di JavaScript boleh berisi tipe campuran ([1, "dua", true]), tapi dalam praktik sebaiknya isinya sejenis supaya mudah diolah. Mengakses index yang tidak ada tidak memicu error, hasilnya undefined. Sejak ES2022 ada juga buah.at(-1) untuk mengambil elemen terakhir dengan lebih ringkas.
Walaupun dideklarasikan dengan const, isi array tetap bisa diubah. const hanya melarang variabel diisi array lain, bukan mengubah isinya.
Menambah dan menghapus elemen
| Method | Posisi | Aksi | Mengembalikan |
|---|---|---|---|
push(x) | Akhir | Menambah | Panjang baru |
pop() | Akhir | Menghapus | Elemen yang dihapus |
unshift(x) | Awal | Menambah | Panjang baru |
shift() | Awal | Menghapus | Elemen yang dihapus |
Keempat method ini mengubah array aslinya (istilahnya mutating). Ingat ini, karena method lain di bawah justru tidak mengubah aslinya.
slice vs splice
Dua nama ini mirip, tapi sifatnya bertolak belakang.
slice(awal, akhir)menyalin sebagian array. Indexakhirtidak ikut. Array asli tetap utuh.splice(awal, jumlahHapus, ...elemenBaru)memotong langsung array asli: menghapus, menyisipkan, atau keduanya.
Cara mengingat: splice punya huruf p seperti potong, jadi dia memotong array aslinya. slice cuma mengambil irisan salinan, seperti memotret sepotong kue tanpa memakannya.
map, filter, reduce, find, includes
Method berikut menerima callback, fungsi yang dijalankan untuk setiap elemen. Semuanya tidak mengubah array asli.
mapmengubah setiap elemen, hasilnya array baru dengan panjang sama.filtermenyaring, hasilnya array baru yang bisa lebih pendek.reducemeringkas seluruh array menjadi satu nilai. Parameter pertama callback adalah akumulator (hasil sementara), dan0di akhir adalah nilai awalnya.findmengembalikan elemen pertama yang cocok, atauundefinedkalau tidak ada.includes(ES2016) hanya menjawabtrueataufalse.
Cara membaca reduce langkah demi langkah: mulai dari 0, tambah 15000 jadi 15000, tambah 40000 jadi 55000, tambah 8000 jadi 63000, tambah 25000 jadi 88000.
Object: data dengan label
Kalau array cocok untuk daftar, object cocok untuk mendeskripsikan satu hal dengan banyak sifat. Datanya disimpan sebagai pasangan key: value, seperti formulir biodata.
Di dalam method, this merujuk ke object yang memanggilnya, jadi this.nama berarti mhs.nama.
Titik atau kurung?
Dot notation lebih ringkas dan dipakai sehari-hari. Bracket notation wajib dipakai saat nama properti mengandung spasi atau tanda minus, atau saat nama propertinya disimpan di variabel:
Menambah, mengubah, menghapus
Object.keys, values, entries
Object tidak bisa langsung di-map seperti array. Tiga fungsi ini mengubahnya menjadi array dulu:
Array of objects
Data dari API atau database hampir selalu berbentuk array berisi object. Di sinilah semua yang kamu pelajari tadi bertemu.
Rantai filter lalu map dibaca seperti kalimat: "ambil produk yang stoknya ada, lalu ambil namanya".
Kesalahan umum
- Menganggap index mulai dari 1. Elemen pertama ada di
[0], elemen terakhir di[length - 1]. - Tertukar
slicedansplice.splicemengubah array asli, jadi data bisa hilang tanpa sadar. - Lupa
returndi callback berkurung kurawal.harga.map(h => { h * 2 })menghasilkan array berisiundefined. reducetanpa nilai awal. Pada array kosong ini memicuTypeError; biasakan memberi nilai awal seperti0.- Memakai dot notation untuk key di variabel.
obj.kolommencari properti bernama "kolom", bukan isi variabelnya.
Rangkuman
- Array menyimpan data berurutan mulai index 0;
push/popbekerja di akhir,unshift/shiftdi awal. slicemenyalin tanpa mengubah,splicememotong array asli.map,filter,reduce,find, danincludesmengolah array tanpa mengubah aslinya.- Object menyimpan pasangan key-value; akses dengan titik atau kurung, tambah dengan penugasan, hapus dengan
delete. Object.keys,values, danentriesmengubah object menjadi array agar mudah diolah.
Slide 11 sampai 12 dari deck JavaScript. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Latihan kode (1)
- 3. Kuis (4 soal)
Latihan kode: Mengolah data nilai siswa
Setiap fungsi menerima array of objects seperti ini:
Lengkapi:
namaLulus(siswa)mengembalikan array nama siswa dengan nilai minimal 75.rataRata(siswa)mengembalikan rata-rata nilai. Array kosong menghasilkan0.cariSiswa(siswa, nama)mengembalikan object siswa dengan nama itu, atauundefinedbila tidak ada.hitungPerKota(siswa)mengembalikan object berisi jumlah siswa per kota, misalnya{ Bandung: 1, Depok: 1 }.
Petunjuk: filter, map, reduce, find, dan bracket notation.
Cek pemahaman
1Apa yang ditampilkan kode berikut?
const a = [1, 2, 3, 4, 5]; const b = a.slice(1, 3); console.log(b.length + a.length);2Method array mana yang mengembalikan elemen pertama yang memenuhi syarat?
3Kalau nama properti disimpan di sebuah variabel, kamu perlu bracket notation untuk mengaksesnya.
4Apa yang ditampilkan kode berikut?
const nilai = [4, 7, 10]; const hasil = nilai .filter(n => n > 5) .reduce((t, n) => t + n, 0); console.log(hasil);
