Confuzia dintre cheie și element în bucla for în JavaScript
Să presupunem că avem un array cu numele lunilor:
let arr = [
'ian', 'feb', 'mart', 'apr', 'mai', 'iunie',
'iulie', 'aug', 'sept', 'oct', 'nov', 'dec'
];
Să presupunem că variabila month stochează
numărul lunii curente:
let month = 10;
Să afișăm toate lunile folosind o buclă, în timp ce luna curentă o vom afișa cu italic.
Un anumit programator a rezolvat deja această problemă,
cu toate acestea, a făcut o greșeală și nu a acordat atenție
faptului că în variabila month
este stocat numărul lunii, și nu numele acesteia:
for (let i = 0; i < arr.length; i++) {
if (month === arr[i]) { // eroarea este aici
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}
Programatorul nostru compară elementul array-ului
cu variabila month. Dar în această
variabilă este stocat numărul lunii,
și nu numele acesteia!
Pentru ca codul să funcționeze corect,
trebuie să comparăm month
cu numărul lunii, adică
cu valoarea contorului i:
for (let i = 0; i < arr.length; i++){
if (month === i) { // am corectat eroarea
document.write('<i>' + arr[i] + '</i>');
}
else {
document.write(arr[i]);
}
document.write('<br>');
}