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
Patricia Arquetteoriginal
2024-11-13 12:13:02850parcourir

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

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

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

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

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