Maison  >  Article  >  interface Web  >  Comment pouvez-vous implémenter une méthode `filter()` pour les objets JavaScript ?

Comment pouvez-vous implémenter une méthode `filter()` pour les objets JavaScript ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 03:26:01676parcourir

How can you implement a `filter()` method for JavaScript objects?

JavaScript : Implémentation de filter() pour les objets

JavaScript fournit le prototype filter() pour les types Array, mais cette fonctionnalité est absente pour Object genres. Pour résoudre cette limitation, explorons comment créer une implémentation filter() spécifiquement pour les objets.

Implémentation :

Object.prototype.filter = function(predicate) {
  var result = {};

  for (key in this) {
    if (this.hasOwnProperty(key) && !predicate(this[key])) {
      result[key] = this[key];
    }
  }

  return result;
};

Bien que cette implémentation fonctionne de manière isolée, en ajoutant sur un site utilisant jQuery 1.5 et jQuery UI 1.8.9 peut déclencher des erreurs JavaScript.

Solutions alternatives :

Au lieu de modifier le prototype d'objet, envisagez ces solutions autonomes ou fonctions utilitaires :

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. Utilisation de la syntaxe de carte et de propagation :

Object.filter = (obj, predicate) => 
  Object.entries(obj)
        .filter(([key, value]) => predicate(value))
        .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});

3. Utilisation d'Object.entries et d'Object.fromEntries :

Object.filter = (obj, predicate) => 
  Object.fromEntries(
    Object.entries(obj).filter(([key, value]) => predicate(value))
  );

Exemple d'utilisation :

var scores = {
  John: 2,
  Sarah: 3,
  Janet: 1
};
var filtered = Object.filter(scores, score => score > 1); 
console.log(filtered);

Ces solutions alternatives offrent un moyen plus propre et plus maintenable de filtrer les propriétés de l'objet tout en préservant l'objet d'origine.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn