Maison >interface Web >js tutoriel >Comment puis-je filtrer les propriétés dans un objet JavaScript ?
Méthode JavaScript filter() pour les objets
Bien que le type Array ait la méthode filter(), le type Object n'en a pas. Cet article vise à fournir une solution pour implémenter une telle méthode.
Implémentation de filtre d'objet personnalisé
Une approche consiste à étendre le 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; };
Solutions alternatives
Cependant, l'extension de prototypes globaux est généralement déconseillée. Envisagez plutôt ces alternatives :
1. Utilisation de Réduire et Object.keys
Object.filter = (obj, predicate) => Object.keys(obj) .filter(key => predicate(obj[key])) .reduce((res, key) => (res[key] = obj[key], res), {});
2. Syntaxe de cartographie et de propagation
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]})) );
Exemple d'utilisation
var foo = { bar: "Yes", moo: undefined }; var filtered = Object.filter(foo, property => typeof property === "undefined"); console.log(filtered); // { moo: undefined }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!