Forvirring mellem nøgle og element i for-løkke i JavaScript
Lad der være givet en array med månedsnavne:
let arr = [
'jan', 'feb', 'mar', 'apr', 'maj', 'jun',
'jul', 'aug', 'sep', 'okt', 'nov', 'dec'
];
Lad variablen month indeholde
nummeret på den aktuelle måned:
let month = 10;
Lad os ved hjælp af en løkke udskrive alle månederne, hvor den aktuelle måned udskrives i kursiv.
En eller anden programmør har allerede løst denne opgave,
men han begik en fejl og lagde ikke mærke til,
at variablen month
indeholder månedsnummeret, ikke dens navn:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // fejl her
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Vores programmør sammenligner array-elementet
med variablen month. Men denne
variable indeholder månedsnummeret,
ikke dens navn!
For at koden skal fungere korrekt,
skal man sammenligne month
med månedsnummeret, det vil sige
med værdien af tælleren i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // rettede fejlen
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}