Comment puis-je trier un ES6 "Set"?
new Set(['b', 'a', 'c']).sort()
jette TypeError: set.sort is not a function
. Comment puis-je trier un Set
pour assurer une itération particulière ordre?
- Les ensembles sont non-ordonnée.
- peut-être qu'ils sont, mais je tiens à être en mesure de profiter de l'avantage de clés uniques qui
Set
l'offre, tout en étant capable de trier les éléments. Java proposeSortedSet
s, je ne peux que supposer qu'ils l'ont fait parce que quelqu'un a offert une utilisation valide de cas... ES6 ne doit pas être Java, mais jeux de tri semble utile. - Vous ne pouvez pas
sort()
unSortedSet
soit. Il utilise une structure arborescente qui permet dans l'ordre de la traversée, mais vous ne pouvez pas modifier cette commande comme avec unArrayList
. Si vous souhaitez modifier l'ordre, l'utilisation des listes. - pourriez avoir besoin de quelques recherches, mais je pense que
Set
préserve l'ordrenew Set(['b', 'a', 'c'].sort())
- ecma-international.org/ecma-262/9.0/index.html#sec-set-objects je ne peux trouver aucune déclaration au sujet de l'ordre des éléments.
Vous devez vous connecter pour publier un commentaire.
Un ensemble n'est pas d'un ordre abstrait de données de la structure.
Un
Set
cependant toujours a la même itération de commande de l'élément d'insertion de l'ordre [1], de sorte que lorsque vous la répéter (par une itération de la méthode, en appelantSymbol.iterator
, ou par un pour.. de la boucle) on peut toujours s'attendre à ce que.Vous pouvez toujours convertir l'ensemble d'un tableau et de tri que.
[1]
forEach
et CreateSetIteratorSet
àArray
et à l'arrière. Semble assez inefficace."OrderedSet
mais une structure de données similaires existent dans de nombreuses autres langues - généralement mis en œuvre par un arbre. Vous pouvez utiliser un userland collections de la bibliothèque, à savoir: - le populaire ImmutableJS fournit unOrderedSet
. En effet, qui sera probablement plus efficace dans beaucoup de cas. Donc, si vous avez un jeu avec plus de 100 éléments - je serais certainement envisager l'utilisation d'un ensemble ordonné de mise en œuvre de la place.(x, y) => x - y
. Vos numéros seront triés de manière lexicographique autrement.OrderedSet
utilise le insertion comme l'itération de l'ordre; c'est, il fait la même chose que, selon votre réponse, la normeSet
n'.