Förvirring mellan nyckel och element i for-loop i JavaScript
Låt oss anta att det finns en array med månaders namn:
let arr = [
'jan', 'feb', 'mar', 'apr', 'maj', 'jun',
'jul', 'aug', 'sep', 'okt', 'nov', 'dec'
];
Låt variabeln month innehålla
numret på den aktuella månaden:
let month = 10;
Låt oss använda en loop för att skriva ut alla månader, medan den aktuella månaden skrivs ut i kursiv stil.
Någon programmerare har redan löst detta problem,
men de gjorde ett misstag och uppmärksammade inte
att variabeln month
innehåller månadens nummer, inte dess namn:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // felet är här
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Vår programmerare jämför arrayelementet
med variabeln month. Men i denna
variabel lagras månadens nummer,
inte dess namn!
För att koden ska fungera korrekt,
måste man jämföra month
med månadens nummer, det vill säga
med värdet på räknaren i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // fixade felet
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}