Bagaimana cara membuat fungsi multi-filter untuk menyaring beberapa atribut menggunakan JS?
Array objek yang akan difilter
[
{
"name": "Apple",
"age": 24,
"model": "Android",
"status": "Under development",
},
{
"name": "Roboto",
"age": 24,
"model": "Apple",
"status": "Running",
},
.
.
.
.
]
Saya perlu memfilter array menggunakan beberapa parameter menggunakan metode filter JS. Saya telah mendapat solusi parsial dan tidak bisa mendapatkan hasil yang diharapkan (macet).
Di sini, filter juga harus bekerja dengan beberapa nilai untuk satu atribut. Misalnya, usia = 54,23 atau model = Android, Apple dll.
Singkatnya, saya mencoba meniru cara kerja filter seperti situs e-niaga tempat kita dapat membandingkan semua atribut produk dan tag yang dipilih pelanggan untuk menghasilkan daftar produk yang difilter.
Bantuan apa pun sangat berarti. Terima kasih!
Jawaban
Jika Anda memformat kondisi filter Anda seperti objek dalam larik data Anda, tetapi dengan nilai menjadi larik dari nilai yang memungkinkan, Anda dapat menggunakan filter
metode sebagai berikut:
let data = [
{
"name": "Apple",
"age": 24,
"model": "Android",
"status": "Under development",
}, {
"name": "Roboto",
"age": 24,
"model": "Apple",
"status": "Running",
}, {
"name": "Samsung",
"age": 26,
"model": "Blueberry",
"status": "Running",
},
];
let filter = {
"name": ["Roboto", "Ericsson"],
"age": [22, 24, 26],
};
let res = data.filter(obj =>
Object.entries(filter).every(([prop, find]) => find.includes(obj[prop])));
console.log(res);