Forvirring mellom nøkkel og element i for-løkke i JavaScript
La det være gitt en array med navn på måneder:
let arr = [
'jan', 'feb', 'mar', 'apr', 'mai', 'jun',
'jul', 'aug', 'sep', 'okt', 'nov', 'des'
];
La variabelen month inneholde
nummeret til gjeldende måned:
let month = 10;
La oss ved hjelp av en løkke skrive ut alle månedene, der gjeldende måned skrives i kursiv.
En eller annen programmerer har allerede løst denne oppgaven,
men han/hun gjorde en feil og la ikke merke til
at variabelen month
inneholder månedsnummeret, og ikke månedsnavnet:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // feilen er her
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Vår programmerer sammenligner array-elementet
med variabelen month. Men i denne
variabelen lagres månedsnummeret,
og ikke månedsnavnet!
For at koden skal fungere riktig,
må man sammenligne month
med månedsnummeret, det vil si
med verdien til telleren i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // rettet feilen
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}