Σύγχυση κλειδιού και στοιχείου στον βρόχο for στην JavaScript
Ας υποθέσουμε ότι υπάρχει ένας πίνακας με τα ονόματα των μηνών:
let arr = [
'Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιουν',
'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'
];
Ας υποθέσουμε ότι στη μεταβλητή 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>');
}
Ο προγραμματιστής μας συγκρίνει το στοιχείο του πίναka
με τη μεταβλητή 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>');
}