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 datauntuk membedakan string, number, object, dan undefined. - Periksa kemungkinan
nullkarenatypeof nullmenghasilkanobject. - Periksa bentuk response fetch, hasil
JSON.parse, dan nilai darilocalStorage.
| 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:
- Reproduksi error dengan data asli, termasuk response API yang gagal.
- Cetak tipe data memakai
Array.isArraydantypeof. - Normalisasi data sekali di awal fungsi.
- 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.