Záměna klíče a prvku ve smyčce for v JavaScriptu
Nechť je dán pole s názvy měsíců:
let arr = [
'leden', 'únor', 'březen', 'duben', 'květen', 'červen',
'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'
];
Nechť v proměnné month je uloženo
číslo aktuálního měsíce:
let month = 10;
Pomocí smyčky vypišme všechny měsíce, přičemž aktuální měsíc vypišme kurzívou.
Jistý programátor již tento úkol vyřešil,
avšak udělal chybu a nevšiml si,
že v proměnné month
je uloženo číslo měsíce, a ne jeho název:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // chyba zde
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Náš programátor porovnává prvek pole
s proměnnou month. Ale v této
proměnné je uloženo číslo měsíce,
a ne jeho název!
Aby kód fungoval správně,
je třeba porovnávat month
s číslem měsíce, tedy
s hodnotou čítače i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // opravili jsme chybu
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}