Hvad er forskellen mellem JavaScripts for...in, for...of og forEach?

for...in bruges til at iterere over alle numerable egenskaber af et objekt, herunder nedarvede numerable egenskaber. Denne iterationssætning kan bruges med arrays-strenge eller almindelige objekter, men ikke med Map eller Set genstande.

for (let prop in ['a', 'b', 'c'])
  console.log(prop);            // 0, 1, 2 (array indexes)

for (let prop in 'str')
  console.log(prop);            // 0, 1, 2 (string indexes)

for (let prop in {a: 1, b: 2, c: 3})
  console.log(prop);            // a, b, c (object property names)

for (let prop in new Set(['a', 'b', 'a', 'd']))
  console.log(prop);            // undefined (no enumerable properties)

for...of bruges til at iterere over iterable objekter, iterere over deres værdier i stedet for deres egenskaber. Denne iterationssætning kan bruges med arrays, strenge, Map eller Set genstande, men ikke med almindelige genstande.

for (let val of ['a', 'b', 'c'])
  console.log(val);            // a, b, c (array values)

for (let val of 'str')
  console.log(val);            // s, t, r (string characters)

for (let val of {a: 1, b: 2, c: 3})
  console.log(prop);           // TypeError (not iterable)

for (let val of new Set(['a', 'b', 'a', 'd']))
  console.log(val);            // a, b, d (Set values)

Til sidst forEach() er en metode til Array prototype, som giver dig mulighed for at iterere over elementerne i et array. Mens forEach() kun itererer over arrays, den kan få adgang til både værdien og indekset for hvert element, mens den itererer.

['a', 'b', 'c'].forEach(
  val => console.log(val)     // a, b, c (array values)
);

['a', 'b', 'c'].forEach(
  (val, i) => console.log(i)  // 0, 1, 2 (array indexes)
);

Kan du lide korte kodestykker og artikler af høj kvalitet? Det gør vi også! Besøg 30 sekunders kode for flere artikler som denne, eller følg os på Twitter for daglige JavaScript-, React- og Python-uddrag! 👨‍💻