Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menapis Sifat dalam Objek JavaScript?
Kaedah JavaScript filter() untuk Objek
Walaupun jenis Array mempunyai kaedah penapis(), jenis Objek tidak. Artikel ini bertujuan untuk menyediakan penyelesaian untuk melaksanakan kaedah sedemikian.
Pelaksanaan Penapis Objek Tersuai
Satu pendekatan melibatkan memanjangkan Object.prototype:
Object.prototype.filter = function(predicate) { var result = {}; for (key in this) { if (this.hasOwnProperty(key) && !predicate(this[key])) { result[key] = this[key]; } } return result; };
Alternatif Penyelesaian
Walau bagaimanapun, meluaskan prototaip global secara amnya tidak digalakkan. Sebaliknya, pertimbangkan alternatif ini:
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), {});
2. Sintaks Peta dan Sebarkan
Object.filter = (obj, predicate) => Object.fromEntries( Object.entries(obj) .filter(([key, value]) => predicate(value)) .map(([key, value]) => [key, value]) );
3. Object.assign
const filter = (obj, predicate) => Object.assign( {}, ...Object.keys(obj) .filter(key => predicate(obj[key])) .map(key => ({[key]: obj[key]})) );
Contoh Penggunaan
var foo = { bar: "Yes", moo: undefined }; var filtered = Object.filter(foo, property => typeof property === "undefined"); console.log(filtered); // { moo: undefined }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menapis Sifat dalam Objek JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!