Eroare la parcurgerea array-ului cu bucla for-in în JavaScript
Pentru parcurgerea unui array ar trebui
să folosiți bucla for-of.
Uneori, însă, începătorii încercă greșit
să aplice bucla for-in.
Să ne uităm la semnele caracteristice
ale acestei erori.
Să presupunem că avem un array:
let arr = ['a', 'b', 'c'];
Să parcurgem elementele acestui array și să le scriem într-un singur șir.
Un anumit programator a rezolvat deja această problemă,
dar a folosit greșit bucla
for-in. Să vedem
ce a obținut:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // va afișa '012'
Deci, în rezultat obținem șirul '012',
și nu 'abc'. Să înțelegem de ce
s-a întâmplat asta.
De ce, în general, array-ul a fost parcurs
cu bucla for-in? Ideea este că
array-ul în JavaScript este un caz special
de obiect. De fapt, în acest sens, acesta este un cod corect. Dar nu ar trebui să faceți asta.
Ideea este că for-in
în anumite condiții poate accesa
elemente în plus, și pe lângă elementele array-ului
veți obține la parcurgere ceva parazitar.
Parcurgeți array-urile doar cu for-of.
Să înțelegem acum de ce vedem
un rezultat atât de ciudat. Ideea este
că la parcurgerea cu for-in
în variabila elem vor intra
de fapt cheile, în ciuda numelui înșelător al acestei
variabile.
Să corectăm eroarea făcută și să scriem codul corect:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // va afișa 'abc'