Võtme ja elemendi segadus for-tsüklis JavaScriptis
Olgu antud massiiv kuude nimedega:
let arr = [
'jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni',
'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'
];
Olgu muutujas month salvestatud
praeguse kuu number:
let month = 10;
Väljastame tsükli abil kõik kuud, kusjuures praeguse kuu väljastame kaldkirjas.
Mingi programmeerija on juba selle ülesande lahendanud,
kuid ta tegi vea ja ei pannud tähele,
et muutujas month
salvestatakse kuu number, mitte selle nimi:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // viga siin
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Meie programmeerija võrdleb massiivi elementi
muutujaga month. Kuid selles
muutujas hoitakse ju kuu numbrit,
mitte selle nime!
Et kood töötaks õigesti,
tuleb võrrelda month
kuu numbriga, see tähendab
loenduri väärtusega i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // parandasime vea
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}