Confusione tra chiave ed elemento nel ciclo for in JavaScript
Sia dato un array con i nomi dei mesi:
let arr = [
'gen', 'feb', 'mar', 'apr', 'mag', 'giu',
'lug', 'ago', 'set', 'ott', 'nov', 'dic'
];
Sia nella variabile month memorizzato
il numero del mese corrente:
let month = 10;
Utilizzando un ciclo, visualizziamo tutti i mesi, mentre il mese corrente lo visualizzeremo in corsivo.
Un certo programmatore ha già risolto questo problema,
tuttavia, ha commesso un errore e non ha prestato attenzione
al fatto che nella variabile month
è memorizzato il numero del mese, non il suo nome:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // errore qui
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Il nostro programmatore confronta l'elemento dell'array
con la variabile month. Ma in questa
variabile è memorizzato il numero del mese,
non il suo nome!
Affinché il codice funzioni correttamente,
è necessario confrontare month
con il numero del mese, cioè
con il valore del contatore i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // errore corretto
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}