Maison > interface Web > js tutoriel > Comment puis-je filtrer efficacement les paires clé-valeur dans un objet JavaScript ?

Comment puis-je filtrer efficacement les paires clé-valeur dans un objet JavaScript ?

Barbara Streisand
Libérer: 2024-11-24 07:04:11
original
803 Les gens l'ont consulté

How can I effectively filter the key-value pairs in a JavaScript object?

JavaScript : filter() pour les objets

Le prototype filter() existe pour les types Array dans ECMAScript 5, mais pas pour les types Object. Pour implémenter une fonction filter() pour les objets en JavaScript, vous pouvez utiliser les stratégies suivantes :

1. Utilisation de réduire() et Object.keys()

Cette méthode utilise réduire() pour parcourir les clés de l'objet et Object.keys() pour récupérer ces clés. Ensuite, il filtre les clés en fonction d'une fonction de prédicat et renvoie un nouvel objet avec les paires clé-valeur filtrées :

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 map() et de la syntaxe Spread

Une approche similaire à (1), mais au lieu de réduire(), vous pouvez utiliser map() et la syntaxe spread (...) pour créer un nouveau objet :

Object.filter = (obj, predicate) => {
  Object.keys(obj)
    .filter(key => predicate(obj[key]))
    .map(key => ({ [key]: obj[key] }))
    .reduce((a, b) => ({ ...a, ...b }), {});
};
Copier après la connexion

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

Cette méthode utilise Object.entries() pour convertir l'objet en un tableau de paires clé-valeur, puis Object.fromEntries() pour reconstruire l'objet après filtrage :

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

4. Attention : évitez d'étendre Object.prototype

Bien que ces solutions fournissent des implémentations fonctionnelles de filter() pour les objets, il est considéré comme une mauvaise pratique d'étendre directement Object.prototype. Au lieu de cela, fournissez votre fonction de filtre en tant que fonction utilitaire autonome, similaire aux fonctions utilitaires globales JavaScript existantes telles que Object.assign() et Object.keys().

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