Maison > interface Web > js tutoriel > le corps du texte

Comment personnaliser l'égalité pour les objets d'ensemble JavaScript ?

DDD
Libérer: 2024-11-10 15:01:02
original
712 Les gens l'ont consulté

How to Customize Equality for JavaScript Set Objects?

Personnalisation de l'égalité des objets pour l'ensemble JavaScript

L'objet ES6 Set récemment introduit utilise un algorithme d'identité pour les comparaisons d'égalité, similaire à l'opérateur. Cette approche n'est pas bien adaptée pour comparer des objets, comme le démontre l'exemple suivant :

var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]
Copier après la connexion

Deux objets avec des propriétés identiques sont considérés comme des éléments distincts au sein de l'ensemble car ils ne sont pas exactement le même objet. Cette limitation soulève la question de savoir comment personnaliser l'égalité pour les objets Set afin de faciliter les comparaisons approfondies d'objets.

Limitations actuelles et solutions proposées

À partir de maintenant, l'objet ES6 Set manque de méthodes intégrées pour personnaliser les comparaisons d’égalité. Pour résoudre ce problème, l'auteur suggère de créer un objet dérivé qui hérite de Set et remplace les méthodes .has(), .add() et .delete() pour effectuer des comparaisons approfondies d'objets. Cependant, cette approche est inefficace car elle n'utilise pas la fonctionnalité de l'objet Set sous-jacent.

L'article fait référence à une proposition en cours de développement qui vise à introduire des enregistrements et des tuples dans JavaScript. Ces structures de données immuables devraient mettre en œuvre une comparaison approfondie des valeurs, ce qui résoudrait efficacement le problème décrit. Cependant, cette proposition est encore en cours de développement et n'est pas encore entièrement mise en œuvre.

Autres considérations

Certaines stratégies alternatives pour la comparaison d'objets au sein des ensembles incluent :

  • Objets wrapper personnalisés : Créez des objets wrapper qui implémentent une comparaison approfondie d'objets et stockez ces wrappers dans l'ensemble.
  • Fonction d'égalité personnalisée : Définissez une fonction d'égalité personnalisée et utilisez-le comme critère pour la méthode has() de Set.

Ces approches fournissent des solutions de contournement mais ne personnalisent pas directement le comportement d'égalité de l'objet Set.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal