Filter gagal pada array object biasanya bukan karena filter() rusak, melainkan data bukan array, callback tidak mengembalikan true, atau hasilnya tidak disimpan. Cek Array.isArray(data) dan console.log(data) dulu sebelum mengubah logika.
Penyebab Array Object Gagal Difilter di JavaScript
JavaScript membedakan TypeError dengan logic error. TypeError: filter is not a function berarti variabel bukan array. Hasil kosong tanpa error berarti callback berjalan tetapi tidak ada yang lolos.
- Data ternyata object tunggal, null, undefined, atau string JSON yang belum di-parse.
- Kondisi callback salah, misalnya nama properti typo sehingga nilainya undefined.
- Perbandingan tipe keliru, misalnya “20” === 20 selalu false.
- Hasil filter() tidak disimpan, padahal method ini mengembalikan array baru.
Tabel Diagnosis Kondisi Filter yang Bermasalah
Gunakan tabel ini untuk membedakan error runtime dengan logika yang salah.
| Kondisi | Penyebab | Solusi cepat |
|---|---|---|
| filter is not a function | Data bukan array | Cek Array.isArray dan normalisasi data |
| Hasil selalu kosong | Properti salah atau tipe beda | Log data dan perbaiki kondisi callback |
| Data asli tidak berubah | Hasil tidak disimpan | Tampung ke variabel baru |
Cara Memperbaiki Filter Array Object yang Benar
Ikuti urutan ini agar tidak menebak-nebak:
- Pastikan nilai adalah array dengan Array.isArray(data).
- Normalisasi data, misalnya JSON.parse() bila response masih string.
- Perbaiki callback agar selalu mengembalikan boolean.
- Simpan hasil filter ke variabel baru.
// Salah: properti typo dan hasil dibuang
users.filter((u) => u.namme === "Budi");
// Benar
const hasil = users.filter((u) => u.name === "Budi");
console.log(hasil);
Kode benar memakai strict equality. Untuk pencarian tidak sensitif huruf besar kecil, samakan dulu dengan toLowerCase(). Tambahkan pengecekan bila properti bisa hilang, misalnya u.name && u.name.includes(“Bud”).
Cara Mencegah Error Filter Terulang
Validasi tipe sebelum memanggil filter(), terutama untuk data dari Fetch API. Normalisasi bentuk response karena server kadang mengirim object tunggal saat data hanya satu.
- Samakan ejaan properti dengan response API.
- Samakan tipe angka dan string sebelum dibandingkan.
- Perlakukan array kosong sebagai hasil valid, bukan error.
- Gunakan nilai default seperti data ?? [] bila data boleh kosong.
FAQ
Kenapa filter mengembalikan array kosong?
Tidak ada object yang memenuhi kondisi, biasanya karena salah nama properti atau beda tipe data.
Kenapa muncul filter is not a function?
Variabel yang dipanggil bukan array, misalnya object, null, atau string JSON.
Apakah filter mengubah array asli?
Tidak, filter membuat array baru sehingga hasilnya harus disimpan ke variabel.