Maison >interface Web >js tutoriel >Comment puis-je réaliser une comparaison d'égalité approfondie pour les éléments d'un objet d'ensemble JavaScript ?

Comment puis-je réaliser une comparaison d'égalité approfondie pour les éléments d'un objet d'ensemble JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 05:28:02389parcourir

How Can I Achieve Deep Equality Comparison for Elements in a JavaScript Set Object?

Personnalisation de l'égalité pour les objets Set JavaScript

Dans ES6 (Harmony), le nouvel objet Set introduit l'égalité de référence pour ses éléments. Cependant, ce comportement n'est pas toujours adapté à une comparaison approfondie d'objets.

Comportement inattendu pour l'égalité des objets :

Considérez l'extrait de code suivant :

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

Comme vous pouvez voyez, même si les deux objets ont les mêmes propriétés et valeurs, ils sont considérés comme distincts en raison de l'égalité de référence.

Comparaison personnalisée pour les objets Set :

Malheureusement, l'objet ES6 Set ne fournit pas de -in méthodes pour personnaliser les comparaisons d’égalité. L'étendre pour remplacer la logique de comparaison serait également un défi.

Solution de contournement potentielle :

Bien que la comparaison personnalisée pour les objets Set ne soit pas directement prise en charge, vous pouvez envisager d'utiliser une structure ou une technique de données alternative :

1. Objets à valeur immuable :

L'article mentionné dans la réponse suggère d'utiliser des objets à valeur immuable, ce qui permettrait à l'ensemble d'utiliser une comparaison de valeurs approfondie. Cependant, ce n'est pas actuellement une norme en JavaScript.

2. Structure de données personnalisée avec comparaison approfondie :

Vous pouvez créer votre propre structure de données personnalisée qui hérite de Set et remplace les méthodes qui utilisent l'identité d'objet. Cependant, cela nécessiterait une réécriture complète de l'implémentation Set, ce qui ne serait pas efficace pour les grands ensembles.

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