Έλεγχος ψηφίων αριθμού σε JavaScript
Ας υποθέσουμε ότι μας δίνεται ένας αριθμός:
let num = 12345;
Η προσπάθεια πρόσβασης στο πρώτο ψηφίο του αριθμού θα οδηγήσει σε απροσδόκητη συμπεριφορά:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // αυτό θα εκτελεστεί
}
Όπως ήδη θα πρέπει να γνωρίζετε, το πρόβλημα είναι ότι μπορούμε να προσπελάσουμε χαρακτήρες μιας συμβολοσειράς, αλλά όχι ψηφία ενός αριθμού:
let num = 12345;
console.log(num[0]); // θα εμφανίσει undefined
Για να λύσουμε το πρόβλημα, ας μετατρέψουμε τον αριθμό μας σε συμβολοσειρά:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // αυτό θα εκτελεστεί
} else {
console.log('---');
}
Δεν είναι απαραίτητο να εισάγουμε μια νέα μεταβλητή,
μπορούμε να εφαρμόσουμε το [0] απευθείας
στο αποτέλεσμα της συνάρτησης String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('σωστό'); // θα εμφανίσει 'σωστό'
} else {
console.log('λάθος');
}
Ας υποθέσουμε τώρα ότι θέλουμε να ελέγξουμε αν το πρώτο ψηφίο
είναι ίσο με 1, ή 2.
Ας γράψουμε τον αντίστοιχο κώδικα:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
Σε αυτήν την περίπτωση, η έκφραση
String(num)[0] επαναλαμβάνεται δύο φορές.
Αυτό είναι, πρώτον, μεγάλο και, δεύτερον, δεν είναι βέλτιστο,
καθώς μετατρέπουμε τον αριθμό σε συμβολοσειρά δύο φορές
- η δεύτερη φορά είναι περιττή, και οι πόροι
του προγράμματος σπαταλούνται σε αυτό.
Ας διορθώσουμε το πρόβλημα:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Δίνεται ένας ακέραιος αριθμός. Γράψτε μια συνθήκη που θα ελέγχει αν το τελευταίο ψηφίο αυτού του αριθμού είναι ίσο με μηδέν.
Ας υποθέσουμε ότι στη μεταβλητή num αποθηκεύεται ένας αριθμός.
Προσδιορίστε εάν ο αριθμός είναι ζυγός ή μονός. Ο αριθμός θα
είναι ζυγός αν το τελευταίο ψηφίο είναι ίσο με 0,
2, 4, 6 ή 8,
και μονός διαφορετικά.