Set semble être une bonne façon de créer des tableaux avec des éléments uniques garantis, mais il n'expose aucun bon moyen d'obtenir des propriétés, à l'exception du générateur [Set] .values, qui est appelé de manière maladroite mySet.values.next()
.
Cela aurait été correct si vous aviez pu appeler map
et des fonctions similaires sur les sets. Mais vous ne pouvez pas faire cela aussi.
J'ai essayé Array.from
, mais semble convertir uniquement des objets de type tableau (NodeList et TypedArrays?) En tableau. Un autre essai: Object.keys
ne fonctionne pas pour les ensembles et Set.prototype n'a pas de méthode statique similaire.
Donc, la question: existe-t-il une méthode intégrée pratique pour créer un tableau avec des valeurs d'un ensemble donné? (L'ordre des éléments n'a pas vraiment d'importance).
si une telle option n'existe pas, alors peut-être y a-t-il une belle doublure idiomatique pour le faire? comme, en utilisantfor...of
ou similaire?
var array = [v for (v of mySet)];
ne fonctionne pas en chrome 46[...mySet]
.Array.from(mySet);
[...mySet]
problèmes lors de la compilation à l'aide de Typescript (voir ce problème ), donc probablement plus sûr à utiliserArray.from(mySet)
si vous avez l'intention de convertir en Typescript dans un proche avenir.via https://speakerdeck.com/anguscroll/es6-uncensored par Angus Croll
Il s'avère que nous pouvons utiliser l'
spread
opérateur:Ou bien, utilisez
Array.from
:la source
Array.from
et...
Array.from
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…chrome://flags/#enable-javascript-harmony
N'oubliez pas que c'est expérimental, ne pensez pas pour le moment qu'il s'agit d'une bonne solution de développement.En supposant que vous utilisez simplement
Set
temporairement pour obtenir des valeurs uniques dans un tableau, puis reconvertissez en tableau, essayez d'utiliser ceci:Cela repose sur l'utilisation de soulignement ou de tiret bas .
la source
Peut-être trop tard pour la fête, mais vous pouvez simplement faire ce qui suit:
Cela devrait fonctionner sans problème dans les navigateurs prenant en charge ES6 ou si vous avez un module d'interface qui remplit correctement les fonctionnalités ci-dessus.
Edit : Aujourd'hui, vous pouvez simplement utiliser ce que @ c69 suggère:
la source
set.entries()
vous obtiendrez un tableau de paires. Vous pouvez utiliserset.values()
pour obtenir le tableau simple.var array = Array.from(set);
.entries
, ni.values
. Comme @Buffalo l'a mentionné ci-dessus -Array.from(set)
c'est suffisant.Array.from()
n'a pas fonctionné comme prévu. Mais maintenant étalé et lesArray.from()
deux fonctionnent très bien.Utilisez l'opérateur spread pour obtenir le résultat souhaité
la source
Dans mon cas, la solution était:
valeur1 est égal à valeur2 => La valeur contenue dans la position actuelle dans l'ensemble. La même valeur est transmise pour les deux arguments
A travaillé sous IE11.
la source
L'utilisation de Set et sa conversion en tableau est très similaire à la copie d'un tableau ...
Vous pouvez donc utiliser les mêmes méthodes pour copier un tableau, ce qui est très facile dans ES6
Par exemple, vous pouvez utiliser
...
Imaginez que vous avez cet ensemble ci-dessous:
Vous pouvez simplement le convertir en utilisant:
et le résultat est:
Un tableau et maintenant vous pouvez utiliser toutes les méthodes que vous pouvez utiliser pour un tableau ...
Autres façons courantes de le faire:
ou en utilisant des boucles comme:
la source
Le code ci-dessous crée un ensemble à partir d'un tableau puis, à l'aide de l'
...
opérateur.la source
Voici un moyen simple d'obtenir uniquement des valeurs brutes uniques à partir d'un tableau. Si vous convertissez le tableau en ensemble et après cela, effectuez la conversion de l'ensemble en tableau. Cette conversion ne fonctionne que pour les valeurs brutes, pour les objets du tableau, elle n'est pas valide. Essayez-le par vous-même.
la source
RÉPONSE LA PLUS SIMPLE
il suffit de répartir l'ensemble à l'intérieur []
Résultat : [1,5]
la source