Array: includes & indexOf
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah halaman ini, kamu dapat memeriksa keberadaan elemen dengan includes() dan mencari nomor indeks elemen dengan indexOf().
Pendahuluan
Section titled “Pendahuluan”Sebelum memproses data, kita sering harus mencari tahu: “Apakah siswa bernama Budi ada di daftar kelas?”, “Jika ada, di nomor urut berapa posisinya?” Kita menggunakan includes() dan indexOf() untuk menjawabnya.
Penjelasan Materi
Section titled “Penjelasan Materi”includes() — Cek Keberadaan (Boolean)
Section titled “includes() — Cek Keberadaan (Boolean)”Method includes() memeriksa apakah suatu nilai ada di dalam array. Ia mengembalikan boolean true atau false:
const ada = array.includes(nilaiCari)indexOf() — Cari Posisi (Indeks)
Section titled “indexOf() — Cari Posisi (Indeks)”Method indexOf() mencari nilai dalam array dan mengembalikan nomor indeks pertama tempat nilai itu ditemukan. Jika tidak ditemukan, ia mengembalikan -1:
const posisi = array.indexOf(nilaiCari)Analogi Kehidupan Sehari-hari
Section titled “Analogi Kehidupan Sehari-hari”Mencari Buku di Rak
Section titled “Mencari Buku di Rak”Kamu ingin tahu apakah ada buku “TypeScript” di rak:
- includes() seperti menelusuri rak dengan mata lalu menjawab: “Ya, ada buku itu” atau “Tidak, tidak ada”.
- indexOf() seperti menunjuk sekat raknya: “Buku itu ada di sekat nomor 2”. Jika tidak ada, kamu menggeleng dan menjawab: “-1” (tidak ada sekat yang cocok).
Visual Illustration
Section titled “Visual Illustration”const buah = ["Apel", "Mangga", "Apel"]
buah.includes("Mangga") ──► truebuah.includes("Semangka") ──► false
buah.indexOf("Mangga") ──► 1buah.indexOf("Apel") ──► 0 (hanya menemukan yang PERTAMA)buah.indexOf("Semangka") ──► -1Mari Mencoba
Section titled “Mari Mencoba”Buat src/bab5/includes-indexof.ts:
const daftarSiswa: string[] = ["Andi", "Budi", "Citra", "Dian", "Budi"]
// 1. Menggunakan includes()console.log("=== Menggunakan includes() ===")const cariCitra = daftarSiswa.includes("Citra")const cariEko = daftarSiswa.includes("Eko")
console.log(`Apakah Citra ada? ${cariCitra}`)console.log(`Apakah Eko ada? ${cariEko}`)
// 2. Menggunakan indexOf()console.log("\n=== Menggunakan indexOf() ===")const indeksBudi = daftarSiswa.indexOf("Budi")const indeksEko = daftarSiswa.indexOf("Eko")
console.log(`Budi pertama ada di indeks: ${indeksBudi}`)console.log(`Eko ada di indeks: ${indeksEko}`)
// Contoh pengambilan keputusanconst namaCari = "Dian"if (daftarSiswa.includes(namaCari)) { const pos = daftarSiswa.indexOf(namaCari) console.log(`\nSiswa ${namaCari} ditemukan di posisi urut ${pos + 1}`)} else { console.log(`\nSiswa ${namaCari} tidak terdaftar.`)}Jalankan:
tsx src/bab5/includes-indexof.tsOutput
Section titled “Output”=== Menggunakan includes() ===Apakah Citra ada? trueApakah Eko ada? false
=== Menggunakan indexOf() ===Budi pertama ada di indeks: 1Eko ada di indeks: -1
Siswa Dian ditemukan di posisi urut 4Penjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”daftarSiswa.includes("Citra")— menghasilkantruekarena Citra ada di array.daftarSiswa.indexOf("Budi")— mengembalikan1(Budi pertama). Budi kedua di indeks 4 diabaikan karenaindexOf()berhenti setelah menemukan kecocokan pertama.indexOf("Eko")— menghasilkan-1karena Eko tidak ada.
Menghindari Nilai -1 yang Membingungkan
Section titled “Menghindari Nilai -1 yang Membingungkan”Saat menggunakan indexOf(), selalu pastikan untuk memeriksa apakah hasilnya bukan -1 sebelum menggunakannya sebagai indeks pengakses data:
const pos = array.indexOf(cari)if (pos !== -1) { console.log(`Ditemukan di indeks ${pos}`)}Latihan
Section titled “Latihan”Buat array berisi daftar mata pelajaran hari ini.
- Gunakan
includes()untuk mengecek apakah ada mata pelajaran"Pemrograman". - Gunakan
indexOf()untuk mencari di urutan indeks ke berapa mata pelajaran tersebut berada. Tampilkan hasil analisisnya.
Ringkasan
Section titled “Ringkasan”includes()memeriksa keberadaan elemen (hasil berupa boolean).indexOf()mencari indeks pertama elemen (hasil berupa number).indexOf()menghasilkan-1jika elemen tidak ditemukan.- Keduanya membandingkan nilai secara ketat (
===).