Direct naar de hoofdinhoud
Module 5 · Les 2 van 418/32 in de cursus~10 min
Modulelessen (2/4)

voor...van en voor...in

JavaScript heeft twee "ergonomische" lussen die niet moeten worden verward:

  • for…of herhaalt de waarden van een itereerbare verzameling (array, string, Set, Map...).
  • for…in herhaalt de opsombare sleutels van een object.

Ze zijn nauwe verwanten en gemakkelijk te verwisselen; het gebruik van de verkeerde taal is een van de eerste in deze taal vallen.

for…of voor arrays en strings

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'
}

Het geeft u niet de index. Als je de index ook nodig hebt, gebruik dan entries():

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

for…in voor objecten

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

Wanneer je ze NIET moet verwarren

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'
}

Probeer het

Oefening#js.m5.l2.e1
Pogingen: 0Laden…

Definieer `concat(words)` dat, gegeven een lijst met strings, een string retourneert waarin ze allemaal aaneengeschakeld zijn, gescheiden door een spatie. Gebruik voor...van.

Editor laden…
Toon hint

Verzamelen in een string; voeg de spatie alleen toe als dit niet het eerste woord is.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#js.m5.l2.e2
Pogingen: 0Laden…

Definieer `positiveValues(obj)` dat een array retourneert met de waarden van het object die getallen > 0 zijn. Gebruik for…in. De volgorde moet overeenkomen met de iteratievolgorde van de sleutels.

Editor laden…
Toon hint

Loop met for...in over de toetsen, filter met typeof en > 0, druk in de resultaten.

Oplossing beschikbaar na 3 pogingen