Greška u iteraciji niza pomoću for-in petlje u JavaScript-u
Za iteraciju kroz niz treba
koristiti petlju for-of.
Međutim, početnici ponekad greškom
pokušavaju da upotrebe petlju for-in.
Pogledajmo karakteristične znake
ove greške.
Neka imamo niz:
let arr = ['a', 'b', 'c'];
Hajde da prođemo kroz elemente ovog niza i upišemo ih u jedan string.
Izvesni programer je već rešio ovaj zadatak,
ali je greškom upotrebio petlju
for-in. Da vidimo
šta je dobio:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // ispisaće '012'
Dakle, kao rezultat dobija se string '012',
a ne 'abc'. Hajde da shvatimo zašto
se to dogodilo.
Zašto se uopšte niz iterirao
kroz petlju for-in? Stvar je u tome što je
niz u JavaScript-u specijalni
slučaj objekta. Zbog toga je zapravo
u tom smislu ovo ispravan kod. Ali tako ne treba
raditi.
Stvar je u tome što for-in
pod određenim uslovima može zahvatiti
višak, i pored elemenata niza
dobićete pri iteraciji još nešto parazitsko.
Iterirajte nizove samo pomoću for-of.
Hajde sada da shvatimo zašto vidimo
tako čudan rezultat. Stvar je u tome,
da će pri iteraciji pomoću for-in
u promenljivu elem zapravo
upadati ključevi, uprkos
nazivu ove promenljive koji zbunjuje.
Hajde da ispravimo napravljenu grešku i napišemo ispravan kod:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // ispisaće 'abc'