Confusão entre chave e elemento no loop for em JavaScript
Suponha que tenhamos um array com os nomes dos meses:
let arr = [
'jan', 'fev', 'mar', 'abr', 'mai', 'jun',
'jul', 'ago', 'set', 'out', 'nov', 'dez'
];
Suponha que a variável month armazene
o número do mês atual:
let month = 10;
Vamos usar um loop para exibir todos os meses, e o mês atual será exibido em itálico.
Um certo programador já resolveu essa tarefa,
no entanto, ele cometeu um erro e não percebeu
que a variável month
armazena o número do mês, e não seu nome:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // erro aqui
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Nosso programador está comparando o elemento do array
com a variável month. Mas essa
variável armazena o número do mês,
e não o seu nome!
Para que o código funcione corretamente,
é necessário comparar month
com o número do mês, ou seja,
com o valor do contador i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // erro corrigido
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}