Sebelum Ubah Kode, Cara Mengatasi Includes Is Not A Function Javascript dengan Cek Tipe Data

Cek tipe data dulu sebelum ubah logika. Error includes is not a function berarti kode memanggil .includes() pada nilai yang tidak punya method itu. Method ini hanya ada di String dan Array di JavaScript browser maupun Node.js, jadi pemicu paling sering adalah variabel berisi null, undefined, angka, atau Object polos dari response API.

Arti Error Includes Is Not a Function di JavaScript

Browser menampilkan error ini sebagai TypeError. JavaScript tidak menemukan fungsi includes pada prototype nilai tersebut, lalu menghentikan eksekusi baris itu.

Kasus umum terjadi setelah fetch JSON. Dokumentasi menulis field berupa array, tetapi server mengirim object, null, atau string kosong. Variabel yang awalnya string juga bisa berubah menjadi array setelah diproses, atau sebaliknya.

Penyebab Umum dan Cara Mengeceknya

Jalankan pemeriksaan tipe tepat sebelum baris error, bukan tebakan dari console.log saja:

  • Gunakan Array.isArray(data) untuk memastikan nilai benar-benar Array.
  • Gunakan typeof data untuk membedakan string, number, object, dan undefined.
  • Periksa kemungkinan null karena typeof null menghasilkan object.
  • Periksa bentuk response fetch, hasil JSON.parse, dan nilai dari localStorage.
Kondisi Penyebab Solusi
Data null atau undefined API kosong atau variabel belum diisi Beri nilai default array atau string
Nilai berupa Object Response API berbentuk object, bukan Array Pakai Object.values atau Object.keys
Nilai berupa angka Field ID atau jumlah dipanggil includes Ubah ke string dulu bila perlu

Cara Memperbaiki Includes Agar Tidak Error Lagi

Ikuti urutan ini supaya perbaikan tepat sasaran:

  1. Reproduksi error dengan data asli, termasuk response API yang gagal.
  2. Cetak tipe data memakai Array.isArray dan typeof.
  3. Normalisasi data sekali di awal fungsi.
  4. Ganti cara pengecekan bila datanya memang Object.
// Salah: data bisa null atau Object
data.includes("admin");

// Benar untuk Array
if (Array.isArray(data) && data.includes("admin")) {
  console.log("ditemukan");
}

// Benar untuk String
if (typeof data === "string" && data.includes("admin")) {
  console.log("ditemukan");
}

// Alternatif untuk Object
if (data && Object.values(data).includes("admin")) {
  console.log("ditemukan");
}

Normalisasi membuat kode lebih aman daripada menaruh optional chaining di semua baris. Contohnya ubah null menjadi array kosong: const list = Array.isArray(data) ? data : [];

Cara Mencegah Error Serupa di Kode Berikutnya

Validasi selalu di batas data masuk. Periksa parameter fungsi, response fetch setelah response.ok, dan hasil bacaan localStorage sebelum dipakai.

Bedakan tiga kebutuhan ini sejak awal. Array.prototype.includes mencari elemen array, String.prototype.includes mencari substring, sedangkan Object membutuhkan Object.keys, Object.values, atau Object.hasOwn untuk cek properti.

FAQ

Apakah includes bisa dipakai pada Object?

Tidak, Object polos tidak punya method includes sehingga perlu Object.keys atau Object.values.

Kenapa includes gagal padahal data terlihat seperti Array?

Data tersebut kemungkinan Object, string JSON yang belum di parse, atau null pada runtime.

Apa pengganti includes yang paling aman?

Validasi tipe dulu, lalu pakai includes untuk Array atau String dan Object.values untuk Object.