Junior
Jak se v JavaScriptu převádí řetězec na číslo?
sobes.tech AI
Odpověď od AI
Převod řetězce na číslo v JavaScriptu lze provést několika způsoby:
-
Nepřímý převod typu:
- Matematické operátory: například unární plus
+nebo odčítání-.
// Nepřímý převod pomocí unárního plus let str = "123"; let num = +str; // num = 123 (číslo)- Matematické operace: při použití matematických operátorů se JavaScript pokusí převést operandy na čísla.
// Nepřímý převod pomocí odčítání let str1 = "10"; let str2 = "5"; let result = str1 - str2; // result = 5 (číslo) - Matematické operátory: například unární plus
-
Explicitní převod typu:
parseInt(string, radix): Převádí řetězec na celé číslo. Druhý argumentradix(základ soustavy) se doporučuje uvádět, aby se předešlo neočekávanému chování.
// Převod pomocí parseInt let strInt = "42px"; let numInt = parseInt(strInt, 10); // numInt = 42 (celé číslo) let strBinary = "101"; let numBinary = parseInt(strBinary, 2); // numBinary = 5 (celé číslo)parseFloat(string): Převádí řetězec na desetinné číslo. Parsuje řetězec do prvního ne-číslicového znaku nebo tečky.
// Převod pomocí parseFloat let strFloat = "3.14abc"; let numFloat = parseFloat(strFloat); // numFloat = 3.14 (desetinné číslo)Number(value): Převádí jakoukoli hodnotu na číslo. Je přísnější nežparseIntaparseFloat. Pokud řetězec nelze úplně převést na číslo, vracíNaN.
// Převod pomocí Number let strNum = "123.45"; let numFromNumber = Number(strNum); // numFromNumber = 123.45 (číslo) let strInvalid = "hello"; let numInvalid = Number(strInvalid); // numInvalid = NaN
Rozdíly a vlastnosti:
| Metoda | Popis | Vrací při neplatném řetězci | Parsuje od začátku do prvního ne-čísla |
|---|---|---|---|
+string |
Nepřímý převod pomocí unárního +. | NaN |
Ne (celý řetězec) |
string - 0 |
Nepřímý převod pomocí odčítání. | NaN |
Ne (celý řetězec) |
parseInt() |
Parsuje celé číslo. | NaN |
Ano |
parseFloat() |
Parsuje desetinné číslo. | NaN |
Ano |
Number() |
Přímý převod. Přísnější. | NaN |
Ne (celý řetězec) |
Volba metody závisí na konkrétním úkolu a očekávaném formátu vstupního řetězce. Number() je preferovaná metoda pro převod řetězců představujících celé nebo desetinné čísla bez dalších znaků. parseInt() a parseFloat() jsou užitečné pro extrakci číselných hodnot z řetězců obsahujících doplňkové znaky (například jednotky měření). Nepřímý převod je třeba používat opatrně, s pochopením jeho chování.