Personnalisation de l'égalité des objets dans les ensembles JavaScript
Contexte :
Dans l'objet ES6 Set de JavaScript, l'égalité est déterminé par l'opérateur ===, qui compare les références d'objet. Cette approche ne convient pas à la comparaison approfondie d'objets.
Question :
Comment pouvons-nous personnaliser l'égalité des objets dans les objets Set pour permettre des comparaisons approfondies d'objets similaires à la méthode equals(Object) de Java ?
Réponse :
Mise à jour (mars 2022) :
Une proposition est en cours pour introduire les enregistrements et les tuples, qui sont des structures immuables qui permettent une comparaison directe par valeur au lieu de référence. Cela s'étendrait aux objets Set et Map, permettant des comparaisons/recherches clés basées sur le contenu de l'objet.
Réponse originale :
L'objet ES6 Set ne dispose pas de méthodes de comparaison personnalisables. Il n'est pas possible d'étendre ses méthodes .has(), .add() et .delete() pour effectuer des comparaisons approfondies d'objets.
Tenter de dériver un objet personnalisé de Set et remplacer les méthodes susmentionnées avec deep la logique de comparaison entraînerait de mauvaises performances en raison du manque de prise en charge de l'objet Set sous-jacent, nécessitant une itération par force brute pour localiser les correspondances.
Comme indiqué dans la spécification ES6, la fonctionnalité permettant de configurer la comparaison d'égalité dans les ensembles a été reporté en raison de difficultés de mise en œuvre. Il est recommandé de comparer les valeurs primitives ou les objets de valeur immuable pour l'égalité dans les ensembles, car ils sont comparés par valeur par défaut en JavaScript.
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!