Maison >interface Web >js tutoriel >Comment obtenir des fonctionnalités de type ensemble en JavaScript ?

Comment obtenir des fonctionnalités de type ensemble en JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 06:56:30448parcourir

 How to Achieve Set-Like Functionality in JavaScript?

Imiter des ensembles en JavaScript ?

Question : En JavaScript, il est possible de créer une structure de données qui émule le comportement d'un ensemble, fournissant la fonctionnalité suivante :

  • Vérifier efficacement si une valeur est dans l'ensemble.
  • Supprimer rapidement un élément s'il existe.
  • Ajouter rapidement un élément s'il ne l'est pas déjà présent.

Quelle est la meilleure approche pour obtenir cette fonctionnalité de type ensemble ? L'utilisation d'un objet, avec les clés stockant les propriétés et les valeurs toutes définies sur true, est-elle une solution raisonnable ?

Réponse :

Dans un environnement ES6, vous pouvez exploiter l'objet Set intégré, qui fournit toutes les fonctionnalités souhaitées.

Pour ES5 et versions antérieures :

Utilisation d'un objet :

Créer un objet avec des clés représentant les valeurs et des valeurs toujours définies sur true peut fonctionner pour des tâches simples, mais cela a des limites. Par exemple, vous devrez vérifier la véracité en utilisant if (obj[key]) au lieu du plus concis if (key in obj). De plus, cette approche contraint toutes les clés à des chaînes, ce qui rend la tâche problématique si vous disposez à la fois de clés numériques et de chaînes qui doivent se comporter distinctement.

Considérez cette solution basée sur les objets modifiée qui résout certains de ces problèmes :

// create empty object
var obj = {};

// or create an object with some items already in it
var obj = { "1": true, "2": true, "3": true, "9": true };

// Question 1: Is A in the list?
if (Object.prototype.hasOwnProperty.call(obj, A))
    // put code here

// Question 2: Delete 'A' from the list if it's there
delete obj[A];

// Question 3: Add 'A' to the list if it's not already there
obj[A] = true;

Objets d'ensemble pré-construits :

Si vous préférez une solution prête à l'emploi, vous pouvez utiliser des objets d'ensemble pré-construits comme miniSet ou un objet d'ensemble plus riche en fonctionnalités . Ils fournissent une interface simple pour effectuer des opérations d'ensemble.

ES6 Set Polyfill :

Pour la compatibilité ES6, vous pouvez utiliser un polyfill comme le polyfill ES6 Set. Cela vous permet d'écrire du code compatible ES6 qui fonctionnera dans des environnements remontant à IE7, mais cela ne capture pas pleinement la facilité d'utilisation de l'objet natif ES6 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!

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