Confusión entre clave y elemento en el bucle for en JavaScript
Supongamos que tenemos un array con los nombres de los meses:
let arr = [
'янв', 'фев', 'март', 'апр', 'май', 'июнь',
'июль', 'авг', 'сен', 'окт', 'ноя', 'дек'
];
Supongamos que en la variable month se almacena
el número del mes actual:
let month = 10;
Mostremos todos los meses usando un bucle, y al mismo tiempo mostremos el mes actual en cursiva.
Cierto programador ya resolvió esta tarea,
sin embargo, se equivocó y no prestó atención
al hecho de que en la variable month
se almacena el número del mes, y no su nombre:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // el error está aquí
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Nuestro programador compara el elemento del array
con la variable month. ¡Pero en esta
variable se almacena el número del mes,
y no su nombre!
Para que el código funcione correctamente,
se debe comparar month
con el número del mes, es decir,
con el valor del contador i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // corregimos el error
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}