Feil ved gjennomgang av array med for-in løkke i JavaScript
For å gå gjennom et array bør du
bruke for-of løkken.
Noen ganger prøver imidlertid nybegynnere feilaktig
å bruke for-in løkken.
La oss se på de karakteristiske tegnene
på denne feilen.
La oss si at vi har et array:
let arr = ['a', 'b', 'c'];
La oss gå gjennom elementene i dette arrayet og skrive dem til en enkelt streng.
En programmerer har allerede løst dette problemet,
men brukte feilaktig for-in løkken.
La oss se på hva han fikk:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // vil skrive ut '012'
Så, resultatet blir strengen '012',
og ikke 'abc'. La oss finne ut hvorfor
dette skjedde.
Hvorfor ble arrayet i det hele tatt gått gjennom
med for-in løkken? Saken er at
et array i JavaScript er et spesialtilfelle
av et objekt. Derfor er dette faktisk
korrekt kode på dette punktet. Men det bør ikke
gjøres.
Grunnen er at for-in
under visse forhold kan fange opp
ekstra ting, og du kan i tillegg til array-elementene
få noe ekstra uønsket under gjennomgangen.
Gå gjennom arrays kun med for-of.
La oss nå finne ut hvorfor vi ser
et så merkelig resultat. Saken er
at under gjennomgang med for-in
vil variabelen elem faktisk
inneholde nøklene, til tross for det forvirrende
navnet på denne variabelen.
La oss rette feilen som er begått og skrive korrekt kode:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // vil skrive ut 'abc'