Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menapis Objek JavaScript Tanpa Mengubah Suai Prototaip Asli?
Penapisan Objek dalam JavaScript Menggunakan Sambungan Prototaip
ECMAScript 5 memperkenalkan kaedah penapis() untuk jenis Array, tetapi bukan untuk jenis Objek. Ini menimbulkan persoalan tentang cara melaksanakan kaedah penapis() untuk Objek dalam JavaScript.
Pelaksanaan Penapis Objek Tersuai
Satu pendekatan ialah memanjangkan Object.prototype dengan kaedah penapis tersuai():
Object.prototype.filter = function (predicate) { var result = {}; for (var key in this) { if (this.hasOwnProperty(key) && !predicate(this[key])) { result[key] = this[key]; } } return result; };
Pelaksanaan ini menggunakan gelung untuk mengulangi sifat objek sendiri dan menyemak sama ada fungsi predikat mengembalikan benar atau salah untuk setiap nilai. Jika palsu, pasangan nilai kunci ditambahkan pada objek hasil.
Walau bagaimanapun, memanjangkan Object.prototaip asli dianggap amalan buruk, kerana ia boleh menyebabkan konflik dengan perpustakaan atau kod lain.
Pendekatan Alternatif
Daripada memanjangkan Object.prototype, terdapat beberapa alternatif pendekatan untuk menapis objek dalam JavaScript:
Object.filter = (obj, predicate) => Object.keys(obj) .filter((key) => predicate(obj[key])) .reduce((res, key) => (res[key] = obj[key], res), {});
Object.filter = (obj, predicate) => { const filteredValues = Object.keys(obj).map((key) => { if (predicate(obj[key])) { return [key, obj[key]]; } }).filter(Boolean); return Object.fromEntries(filteredValues); };
Object.filter = (obj, predicate) => { const filteredEntries = Object.entries(obj).filter( ([key, value]) => predicate(value) ); return Object.fromEntries(filteredEntries); };
Contoh Penggunaan
Mari menapis objek menggunakan salah satu pendekatan alternatif ini:
const scores = { John: 2, Sarah: 3, Janet: 1 }; // Using the `reduce` and `Object.keys` approach: const filteredScores = Object.filter(scores, (score) => score > 1); console.log(filteredScores); // { Sarah: 3 }
Dengan menggunakan kaedah alternatif ini, anda boleh menapis objek dalam JavaScript tanpa melanjutkan prototaip asli.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Objek JavaScript Tanpa Mengubah Suai Prototaip Asli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!