JavaScript: Melaksanakan Kaedah penapis Tersuai() untuk Objek
Spesifikasi ECMAScript 5 memperkenalkan prototaip penapis() untuk tatasusunan, tetapi tidak untuk objek. Memanjangkan objek terbina dalam JavaScript biasanya tidak digalakkan. Walau bagaimanapun, jika dikehendaki, seseorang boleh mencipta fungsi penapis() tersuai untuk objek menggunakan pendekatan berikut:
1. Menggunakan reduce() dan Object.keys()
Object.filter = (obj, predicate) => Object.keys(obj) .filter(key => predicate(obj[key])) .reduce((res, key) => (res[key] = obj[key], res), {}); // Example: const scores = { John: 2, Sarah: 3, Janet: 1 }; const filtered = Object.filter(scores, score => score > 1); console.log(filtered);
2. Menggunakan reduce() dan Object.keys() dengan Object.assign()
Object.filter = (obj, predicate) => Object.keys(obj) .filter(key => predicate(obj[key])) .reduce((res, key) => Object.assign(res, { [key]: obj[key] }), {}); // Example: same as above
3. Menggunakan map() dan menyebarkan sintaks
Object.filter = (obj, predicate) => Object.fromEntries( Object.entries(obj) .filter(([key, value]) => predicate(value)) .map(([key, value]) => [key, value]) ); // Example: same as above
4. Menggunakan Object.entry() dan Object.fromEntries()
Object.filter = (obj, predicate) => Object.fromEntries( Object.entries(obj).filter(([key, value]) => predicate(value)) ); // Example: same as above
Ingat, melanjutkan prototaip terbina dalam boleh mendatangkan akibat yang tidak diingini. Secara umumnya adalah lebih baik untuk menyediakan fungsi tersuai sebagai utiliti yang berdiri sendiri atau memanjangkan objek global khusus untuk fungsi tertentu.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kaedah `filter()` Tersuai untuk Objek dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!