Avain- ja elementtisekaannus for-silmukassa JavaScriptissa
Olkoon annettuna kuukausien nimista koostuva taulukko:
let arr = [
'tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesa',
'heina', 'elo', 'syys', 'loka', 'marras', 'joulu'
];
Olkoon muuttujassa month tallessa
nykyisen kuukauden numero:
let month = 10;
Tuodaan esille kaikki kuukaudet silmukan avulla, ja nykyinen kuukausi esitetään kursivoidulla tekstilla.
Eräs ohjelmoija on jo ratkaissut tämän tehtavan,
mutta hän teki virheen eika huomioinut,
etta muuttujassa month
on tallessa kuukauden numero, eika sen nimi:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // virhe tassa
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Ohjelmoijamme vertaa taulukon elementtia
muuttujaan month. Mutta eihan tassa
muuttujassa ole tallessa kuukauden nimi,
vaan sen numero!
Jotta koodi toimisi oikein,
taytyy verrata month
kuukauden numeroon, eli
laskurin arvoon i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // korjattiin virhe
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}