Junior
Hogyan alakul át egy karakterláncot számra JavaScriptben?
sobes.tech MI
Válasz az MI-től
A JavaScript-ben a sztringet számmá alakítani többféleképpen lehet:
-
Következetlen típusátalakítás:
- Matematikai operátorok: például az unár + vagy a kivonás -.
// Következetlen típusátalakítás unár + segítségével let str = "123"; let num = +str; // num = 123 (szám)- Matematikai műveletek: amikor matematikai operátorokat használunk, a JavaScript megpróbálja a operandusokat számmá alakítani.
// Kivonással végzett következetlen típusátalakítás let str1 = "10"; let str2 = "5"; let result = str1 - str2; // result = 5 (szám) -
Explicit típusátalakítás:
parseInt(string, radix): A stringet egész számmá alakítja. A második argumentumradix(rendszer alapja) ajánlott megadni, hogy elkerüljük a váratlan viselkedést.
// parseInt használatával történő explicit típusátalakítás let strInt = "42px"; let numInt = parseInt(strInt, 10); // numInt = 42 (egész szám) let strBinary = "101"; let numBinary = parseInt(strBinary, 2); // numBinary = 5 (egész szám)parseFloat(string): A stringet lebegőpontos számmá alakítja. A stringet az első nem számjegyig vagy pontig elemzi.
// parseFloat használatával történő explicit típusátalakítás let strFloat = "3.14abc"; let numFloat = parseFloat(strFloat); // numFloat = 3.14 (lebegőpontos szám)Number(value): Bármilyen értéket számmá alakít. Szigorúbb, mint aparseIntés aparseFloat. Ha a string nem alakítható teljesen számmá, NaN-t ad vissza.
// Number használatával történő explicit típusátalakítás let strNum = "123.45"; let numFromNumber = Number(strNum); // numFromNumber = 123.45 (szám) let strInvalid = "hello"; let numInvalid = Number(strInvalid); // numInvalid = NaN
Különbségek és jellemzők:
| Metódus | Leírás | Érvénytelen string esetén visszatér | Az első nem számjegyig parseol |
|---|---|---|---|
+string |
Következetlen típusátalakítás unár +-val. | NaN |
Nem (az egész string) |
string - 0 |
Következetlen típusátalakítás kivonással. | NaN |
Nem (az egész string) |
parseInt() |
Egész számot parseol. | NaN |
Igen |
parseFloat() |
Lebegőpontos számot parseol. | NaN |
Igen |
Number() |
Szigorú explicit típusátalakítás. | NaN |
Nem (az egész string) |
A módszer kiválasztása a konkrét feladattól és a bemeneti string várt formátumától függ. A Number() a legjobb választás olyan stringekhez, amelyek egész vagy tört számokat tartalmaznak, extra karakterek nélkül. A parseInt() és parseFloat() akkor hasznos, ha a stringekből számértékeket akarunk kinyerni, amelyek tartalmazhatnak kiegészítő karaktereket (pl. mértékegységek). A következetlen típusátalakítást óvatosan kell használni, megértve viselkedését.