Maison > interface Web > js tutoriel > 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
Libérer: 2024-11-20 03:26:01
original
708 Les gens l'ont consulté

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;
};
Copier après la connexion

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), {});
Copier après la connexion

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 }), {});
Copier après la connexion

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

Object.filter = (obj, predicate) => 
  Object.fromEntries(
    Object.entries(obj).filter(([key, value]) => predicate(value))
  );
Copier après la connexion

Exemple d'utilisation :

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

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal