Maison >interface Web >js tutoriel >Comment obtenir des fonctionnalités de type ensemble 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 :
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!