Maison > interface Web > js tutoriel > Comment implémenter une méthode `filter()` personnalisée pour les objets en JavaScript ?

Comment implémenter une méthode `filter()` personnalisée pour les objets en JavaScript ?

Patricia Arquette
Libérer: 2024-11-13 12:13:02
original
875 Les gens l'ont consulté

How to Implement a Custom `filter()` Method for Objects in JavaScript?

JavaScript : implémentation d'une méthode filter() personnalisée pour les objets

La spécification ECMAScript 5 introduit le prototype filter() pour les tableaux, mais pas pour les objets. L'extension des objets intégrés de JavaScript est généralement déconseillée. Cependant, si vous le souhaitez, vous pouvez créer une fonctionnalité filter() personnalisée pour les objets en utilisant les approches suivantes :

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), {});

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

2. Utilisation de réduire() et Object.keys() avec Object.assign()

Object.filter = (obj, predicate) =>
  Object.keys(obj)
    .filter(key => predicate(obj[key]))
    .reduce((res, key) => Object.assign(res, { [key]: obj[key] }), {});

// Example: same as above
Copier après la connexion

3. Utilisation de map() et de la syntaxe de propagation

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

// Example: same as above
Copier après la connexion

4. Utilisation de Object.entries() et Object.fromEntries()

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

// Example: same as above
Copier après la connexion

N'oubliez pas que l'extension des prototypes intégrés peut avoir des conséquences inattendues. Il est généralement préférable de fournir des fonctions personnalisées en tant qu'utilitaires autonomes ou d'étendre des objets globaux spécifiquement pour des fonctionnalités spécifiques.

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 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