Gabimi i përsëritjes së array me ciklin for-in në JavaScript
Për përsëritjen e një array duhet
të përdoret cikli for-of.
Ndonjëherë, megjithatë, fillestarët gabimisht
përpiqen të përdorin ciklin for-in.
Le të shohim shenjat karakteristike
të këtij gabimi.
Le të themi se kemi një array:
let arr = ['a', 'b', 'c'];
Le të përsërisim elementët e këtij array dhe t'i shkruajmë në një rresht të vetëm.
Dikush programues tashmë e ka zgjidhur këtë detyrë,
por gabimisht ka përdorur ciklin
for-in. Le të shohim,
çfarë doli nga ana e tij:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // do të shfaqet '012'
Pra, si rezultat fitohet stringu '012',
e jo 'abc'. Le të kuptojmë pse
ndodhi kështu.
Pse në përgjithësi array u përsërit
përmes ciklit for-in? Çështja është se
array në JavaScript është një rast i veçantë
i objektit. Prandaj në fakt
në këtë aspekt ky është kod i saktë. Por kështu nuk duhet
bërë.
Çështja është se for-in
në disa kushte mund të kap
shtesë, dhe ju përveç elementëve të array
do të merrni gjatë përsëritjes diçka tjetër parazitare.
Përsërisni array vetëm përmes for-of.
Tani le të kuptojmë pse ne shohim
një rezultat kaq të çuditshëm. Çështja është,
se gjatë përsëritjes përmes for-in
në variablin elem në fakt
do të bien çelësat, pavarësisht
nga emërtimi mashtrues i kësaj
variable.
Le të korrigjojmë gabimin e bërë dhe të shkruajmë kodin e saktë:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // do të shfaqet 'abc'