Passer au contenu principal
eLearner.app
Module 5 · Leçon 2 sur 418/32 dans le cours~10 min
Leçons du module (2/4)

for…of et for…in

JavaScript dispose de deux boucles "ergonomiques" à ne pas confondre :

  • for…of itère sur les valeurs d'une collection itérable (tableau, chaîne de caractères, Set, Map...).
  • for…in itère sur les clés énumérables d'un objet.

Elles sont très proches et s'échangent facilement — utiliser la mauvaise est l'un des premiers pièges du langage.

for…of pour les tableaux et les chaînes de caractères

JS
const colori = ['rosso', 'verde', 'blu'];
for (const c of colori) {
  console.log(c); // 'rosso', 'verde', 'blu'
}

for (const ch of 'abc') {
  console.log(ch); // 'a', 'b', 'c'
}

Elle ne te donne pas l'index. Si tu en as aussi besoin, utilise entries() :

JS
for (const [i, c] of colori.entries()) {
  console.log(i, c); // 0 rosso, 1 verde, 2 blu
}

for…in pour les objets

JS
const utente = { nome: 'Anna', eta: 30, citta: 'Roma' };
for (const chiave in utente) {
  console.log(chiave, utente[chiave]); // 'nome' 'Anna', ...
}

Quand ne pas les confondre

JS
const colori = ['rosso', 'verde', 'blu'];

// SBAGLIATO: stampa gli indici come stringhe!
for (const x in colori) {
  console.log(x); // '0', '1', '2'
}

// GIUSTO
for (const x of colori) {
  console.log(x); // 'rosso', 'verde', 'blu'
}

À toi de jouer

Exercice#js.m5.l2.e1
Tentatives : 0Chargement…

Définis `concat(words)` qui, étant donné une liste de chaînes de caractères, renvoie une seule chaîne contenant toutes les autres concaténées, séparées par un espace. Utilise for…of.

Chargement de l'éditeur…
Afficher l'indice

Accumule dans une chaîne ; ajoute l'espace uniquement s'il ne s'agit pas du premier mot.

Solution disponible après 3 tentatives

Exercice de révision

Exercice#js.m5.l2.e2
Tentatives : 0Chargement…

Définis `positiveValues(obj)` qui renvoie un tableau contenant les valeurs de l'objet qui sont des nombres > 0. Utilise for…in. L'ordre doit correspondre à celui de l'itération des clés.

Chargement de l'éditeur…
Afficher l'indice

Boucle avec for...in sur les clés, filtre avec typeof et > 0, puis pousse (push) les valeurs dans les résultats.

Solution disponible après 3 tentatives