Errore nell'iterazione di un array con il ciclo for-in in JavaScript
Per iterare un array si dovrebbe
utilizzare il ciclo for-of.
A volte, però, i principianti erroneamente
tentano di applicare il ciclo for-in.
Diamo un'occhiata ai segni caratteristici
di questo errore.
Supponiamo di avere un array:
let arr = ['a', 'b', 'c'];
Iteriamo gli elementi di questo array e scriviamoli in una singola stringa.
Un certo programmatore ha già risolto questo compito,
ma ha erroneamente utilizzato il ciclo
for-in. Vediamo cosa
ha ottenuto:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // visualizzerà '012'
Quindi, il risultato è la stringa '012',
e non 'abc'. Scopriamo perché
è successo.
Perché l'array è stato iterato
con il ciclo for-in? Il fatto è che
un array in JavaScript è un caso
particolare di oggetto. Quindi in realtà
da questo punto di vista è un codice corretto. Ma non si dovrebbe fare
così.
Il fatto è che for-in
in alcune condizioni può includere
elementi extra, e oltre agli elementi dell'array
potresti ottenere durante l'iterazione qualcos'altro di parassita.
Itera gli array solo con for-of.
Ora scopriamo perché vediamo
un risultato così strano. Il fatto è
che durante l'iterazione con for-in
nella variabile elem in realtà
andranno le chiavi, nonostante
il nome fuorviante di questa
variabile.
Correggiamo l'errore commesso e scriviamo il codice corretto:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // visualizzerà 'abc'