JavaScript ne fournit pas d'objet Set intégré, mais les développeurs ont souvent besoin de pouvoir stocker des valeurs uniques et non ordonnées avec une recherche rapide, capacités d'ajout et de suppression.
Utilisation d'un objet avec des valeurs booléennes :
Comme suggéré dans la question, un objet peut être utilisé pour imiter un ensemble. Les clés représentent les valeurs et les valeurs sont toutes définies sur true (ou sur toute valeur non nulle). Cette approche permet une recherche et une suppression rapides, mais l'ajout devient plus lent à mesure que le nombre de clés augmente.
ES6 Set Object :
Si votre environnement prend en charge ES6 (par exemple, les navigateurs modernes ou transpilés code), vous pouvez utiliser l’objet Set intégré. Il offre d'excellentes performances pour toutes les opérations définies et permet en outre une itération facile sur les éléments et d'éviter la coercition de chaîne.
Polyfills et objets pré-construits :
Pour les environnements qui ne prennent pas en charge ES6, vous pouvez utiliser des polyfills comme "ES6-Set" ou des objets prédéfinis comme "miniSet" ou "set.js" qui offrent des fonctionnalités similaires à l'objet ES6 Set. Ceux-ci offrent des avantages tels que la compatibilité avec les anciens navigateurs ou une empreinte de code réduite.
Détails de mise en œuvre :
Utilisation d'un objet :
const setObj = {};
setObj["item1"] = true;
if ("item1" in setObj) { // fast lookup
console.log("Item found");
}
delete setObj["item1"]; // fast deletion
Utilisation de l'objet Set ES6 :
const set = new Set();
set.add("item1");
if (set.has("item1")) { // fast lookup
console.log("Item found");
}
set.delete("item1"); // fast deletion
Utilisation d'un Polyfill :
import Set from "es6-set";
const set = new Set(["item1", "item2"]);
console.log(...set.keys()); // easy iteration
Utilisation d'un objet pré-construit :
const miniSet = new MiniSet("item1", "item2");
if (miniSet.has("item1")) { // fast lookup
console.log("Item found");
}
miniSet.remove("item1"); // fast deletion
Le meilleur choix dépend des exigences spécifiques et du support disponible dans votre environnement. Pour les applications complexes ou critiques en termes de performances, l'objet ES6 Set est idéal. Sinon, l'utilisation d'un objet, d'un polyfill ou d'un ensemble d'objets prédéfinis peut fournir une solution raisonnable.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3