Блытаніна ключа і элемента ў цыкле for у JavaScript
Няхай дадзены масіў з назвамі месяцаў:
let arr = [
'янв', 'фев', 'март', 'апр', 'май', 'iюнь',
'iюль', 'авг', 'сен', 'окт', 'ноя', 'дек'
];
Няхай у зменнай month захоўваецца
нумар бягучага месяца:
let month = 10;
Давайце з дапамогай цыкла вывядзем усе месяцы, пры гэтым бягучы месяц вывядзем курсівам.
Нейкі праграміст ужо вырашыў гэтую задачу,
аднак, ён памыліўся і не звярнуў увагі
на тое, што ў зменнай month
захоўваецца нумар месяца, а не яго назва:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // памылка тут
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Наш праграміст параўноўвае элемент масіва
са зменнай month. Але ж у гэтай
зменнай захоўваецца нумар месяца,
а не яго назва!
Каб код працаваў правільна,
трэба параўноўваць month
з нумаром месяца, гэта значыць
са значэннем лічыльніка i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // выправілі памылку
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}