83 votes

Itérer sur les éléments d'un ensemble

J'ai activé le drapeau Chrome pour les fonctionnalités expérimentales d'ECMAscript 6, dont l'une est Set . Si j'ai bien compris, les détails de la Set sont largement approuvées par les rédacteurs de spécifications.

Je crée un ensemble a et ajoutez la chaîne 'Hello'

a = Set();
a.add('Hello');

mais comment itérer sur les éléments de a ?

for(let i of a) { console.log(i); }

donne "SyntaxError : Illegal let déclaration hors mode étendu"

for(var i of a) { console.log(i); }

donne "SyntaxError : Identifiant inattendu"

for(var i in a) { console.log(i); }

donne Undefined

Est-il possible d'itérer sur un ensemble dans Chrome 26 ?

63voto

luschn Points 6092

Une méthode très simple consiste à transformer d'abord l'ensemble en tableau :

let a = new Set();
a.add('Hello');
a = Array.from(a);

...et utiliser une simple boucle for.

Sachez que Array.from n'est pas pris en charge par IE11.

36voto

bizi Points 419

Sur la base des spécifications du MDN, Set a une valeurs méthode :

La méthode values() renvoie un nouvel objet Iterator qui contient les valeurs de chaque élément de l'objet Set dans l'ordre d'insertion.

Ainsi, pour itérer à travers les valeurs, je ferais :

var s = new Set(['a1', 'a2'])
for (var it = s.values(), val= null; val=it.next().value; ) {
    console.log(val);
}

31voto

FranXh Points 3776

J'utilise le forEach(..); fonction. ( la documentation )

19voto

Avadhut Thorat Points 21

Vous pouvez utiliser deux méthodes. pour... de et forEach

let a = new Set();
a.add('Hello');

for(let key of a) console.log(key)

a.forEach(key => console.log(key))

8voto

Vivin Paliath Points 40975

En of opérateur ne semble pas être pris en charge actuellement dans Chrome . Il semble que seules les versions 13 à 18 de FireFox le prennent en charge. Il semble également qu'aucun des navigateurs ne prenne en charge la fonction Set bien que la page précise que certains des tests représentent l'existence et non la pleine fonctionnalité ou la cohérence. Il se peut donc que Set est partiellement implémenté dans Chrome.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X