Junior
Πώς γίνεται η μετατροπή μιας συμβολοσειράς σε αριθμό στη JavaScript;
sobes.tech AI
Απάντηση από AI
Ο μετασχηματισμός μιας συμβολοσειράς σε αριθμό στη JavaScript μπορεί να γίνει με διάφορους τρόπους:
-
Αναπόφευκτος μετασχηματισμός τύπου:
- Χειριστές μαθηματικών: Για παράδειγμα, ο μοναδικός συν (+) ή η αφαίρεση (-).
// Αναπόφευκτος μετασχηματισμός με τον μοναδικό συν let str = "123"; let num = +str; // num = 123 (αριθμός)- Μαθηματικές λειτουργίες: Όταν χρησιμοποιούνται μαθηματικοί τελεστές, η JavaScript θα προσπαθήσει να μετατρέψει τους τελεστές σε αριθμούς.
// Αναπόφευκτος μετασχηματισμός με αφαίρεση let str1 = "10"; let str2 = "5"; let result = str1 - str2; // result = 5 (αριθμός) -
Επίσημος μετασχηματισμός τύπου:
parseInt(string, radix): Μετατρέπει μια συμβολοσειρά σε ακέραιο αριθμό. Το δεύτερο όρισμαradix(βάση συστήματος) συνιστάται να ορίζεται για αποφυγή απρόβλεπης συμπεριφοράς.
// Μετατροπή με parseInt let strInt = "42px"; let numInt = parseInt(strInt, 10); // numInt = 42 (ακέραιος) let strBinary = "101"; let numBinary = parseInt(strBinary, 2); // numBinary = 5 (ακέραιος)parseFloat(string): Μετατρέπει μια συμβολοσειρά σε δεκαδικό αριθμό. Αναλύει τη συμβολοσειρά μέχρι το πρώτο μη αριθμητικό χαρακτήρα ή τελεία.
// Μετατροπή με parseFloat let strFloat = "3.14abc"; let numFloat = parseFloat(strFloat); // numFloat = 3.14 (δεκαδικός αριθμός)Number(value): Μετατρέπει οποιαδήποτε τιμή σε αριθμό. Είναι πιο αυστηρό από τοparseIntκαι τοparseFloat. Αν η συμβολοσειρά δεν μπορεί να μετατραπεί πλήρως σε αριθμό, επιστρέφειNaN.
// Μετατροπή με Number let strNum = "123.45"; let numFromNumber = Number(strNum); // numFromNumber = 123.45 (αριθμός) let strInvalid = "hello"; let numInvalid = Number(strInvalid); // numInvalid = NaN
Διαφορές και χαρακτηριστικά:
| Μέθοδος | Περιγραφή | Επιστρέφει σε μη έγκυρη συμβολοσειρά | Αρχίζει να αναλύει μέχρι το πρώτο μη αριθμητικό |
|---|---|---|---|
+string |
Αναπόφευκτος μετασχηματισμός με τον μοναδικό συν. | NaN |
Όχι (ολόκληρη η συμβολοσειρά) |
string - 0 |
Αναπόφευκτος μετασχηματισμός με αφαίρεση. | NaN |
Όχι (ολόκληρη η συμβολοσειρά) |
parseInt() |
Αναλύει σε ακέραιο. | NaN |
Ναι |
parseFloat() |
Αναλύει σε δεκαδικό. | NaN |
Ναι |
Number() |
Επίσημος μετασχηματισμός. Πιο αυστηρός. | NaN |
Όχι (ολόκληρη η συμβολοσειρά) |
Η επιλογή της μεθόδου εξαρτάται από το συγκεκριμένο έργο και τη μορφή εισόδου. Το Number() είναι προτιμότερο για μετατροπή συμβολοσειρών που αντιπροσωπεύουν ακέραιους ή δεκαδικούς αριθμούς χωρίς επιπλέον χαρακτήρες. Τα parseInt() και parseFloat() είναι χρήσιμα για την εξαγωγή αριθμητικών τιμών από συμβολοσειρές που περιέχουν επιπλέον χαρακτήρες (π.χ. μονάδες μέτρησης). Ο αναπόφευκτος μετασχηματισμός πρέπει να χρησιμοποιείται με προσοχή, κατανοώντας τη συμπεριφορά του.