Как перевести число в строку в Javascript?
Чтобы преобразовать число в строку необходимо вызвать метод toString() у числа.
const number = 5555; const notNumber = number.toString();
теперь в notNumber находит не число, а строка. Проверить можно с помощью typeof
typeof notNumber; // 'string'
Также это сработает с отрицательными числами
const negative = -150; const notNegativeNumber = negative.toString(); console.log(notNegativeNumber); // => '-150' - теперь это строка.
Из этого числа мы можем взять символ.
const firstChar = notNegativeNumber[0]; console.log(firstChar); // => '-'
Преобразование строки в число в JavaScript
В JavaScript число можно записать, как фактическое число (например, 28 ) или как строку (например, «28» ).
Однако, если использовать строгое сравнение для этих двух чисел, мы получим следующее:
var num1 = 28; var num2 = "28"; console.log(num1 === num2); // => false
Существует несколько способов преобразования строкового типа данных в числовой.
parseInt()
Функция parseInt() анализирует строку и возвращает целое число. Допускаются пробелы.
У метода есть некоторые ограничения: строка должна начинаться с числа, возвращается только первое число, дробное число будет округлено до ближайшего целого значения. Если значение не может быть преобразовано, возвращается NaN .
parseInt('345') // 345 parseInt('33 коровы') // 33 parseInt(' 4 таракана и 1 сверчок ') // 4 parseInt('в кармане 7 яблок, 1 - зеленое') // NaN parseInt(2.22) // 2 parseInt(8.888) // 8 parseInt('3.14 - это число пи') // 3
parseFloat()
parseFloat() анализирует строку и возвращает все число. Также возвращается только первое число и допускаются пробелы.
parseFloat('345') // 345 parseFloat('33 коровы') // 33 parseFloat(' 4 таракана и 1 сверчок ') // 4 parseFloat('в кармане 7 яблок, 1 - зеленое') // NaN parseFloat(2.22) // 2.22 parseFloat(8.888) // 8.888 parseFloat('3.14 - это число пи') // 3.14
Number()
Number() используется для преобразования чисел, являющимися строкой, в числовой тип. Если значение не может быть преобразовано, возвращается NaN .
Number('345') // 345 Number('33 коровы') // NaN Number(' 4 ') // 4 Number(2.22) // 2.22
Math.floor()
Функция Math.floor() возвращает ближайшее меньшее целое число.
Math.floor('345') // 345 Math.floor('33 коровы') // NaN Math.floor(' 4 ') // 4 Math.floor(2.22) // 2 Math.floor(8.888) // 8
Унарный оператор ( + )
Унарный оператор + ставится перед элементом, пытаясь преобразовать его в число, если элемент — не число. Если в строке есть текст — возвращается NaN .
+1900 // 1900 +'345' // 345 +'33 коровы' // NaN +' 4 ' // 4 +2.22 // 2.22 +' ' // 0
Двойная тильда ( ~~ )
Оператор двойной тильды отрабатывает также, как и унарный оператор + , однако строки с текстом преобразовываются в 0 .
~~1900 // 1900 ~~'345' // 345 ~~'33 коровы' // 0 ~~' 4 ' // 4 ~~2.22 // 2.22 ~~' ' // 0
Умножение на число
Умножение строкового значения на 1 будет преобразовано в число, кроме случаев с текстом.
'345' * 1 // 345 '33 коровы' * 1 // NaN ' 4 ' * 1 // 4 '2.22' * 1 // 2.22 ' ' * 1 // 0
match()
Метод match() возвращает массив из элементов, полученных в результате сравнения исходных данных с регулярным выражением. Регулярное выражение будет проверять строку на наличие чисел. Далее необходимо массив преобразовать в число.
let text = '#col-3-md-12'; let array = text.match(/\d/g); // ['3', '1', '2'] let numberAsString = array.join(''); // '312' let number = +numberAsString; // 312 +'345'.match(/\d/g).join(''); // 345 +'33 коровы'.match(/\d/g).join(''); // 33 +' 4 таракана и 1 сверчок '.match(/\d/g).join(''); // 41 +'в кармане 7 яблок, 1 - зеленое'.match(/\d/g).join(''); // 71 +'3.14 - это число пи'.match(/\d/g).join(''); // 314
как перевести из строки в число js
Функция parseInt() преобразует строку в число и возвращает целочисленное значение. Если строка начинается с нечисловых символов, то parseInt() игнорирует их и считывает только числовую часть. Если же строка не содержит чисел, то parseInt() вернет NaN .
console.log(parseInt('123')); // 123 console.log(parseInt('123px')); // 123 console.log(parseInt('abc')); // NaN
Преобразование типов для примитивов
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
Более новая информация по этой теме находится на странице https://learn.javascript.ru/type-conversions.
Система преобразования типов в JavaScript очень проста, но отличается от других языков. Поэтому она часто служит «камнем преткновения» для приходящих из других языков программистов.
Всего есть три преобразования:
- Строковое преобразование.
- Численное преобразование.
- Преобразование к логическому значению.
Эта глава описывает преобразование только примитивных значений, объекты разбираются далее.
Строковое преобразование
Строковое преобразование происходит, когда требуется представление чего-либо в виде строки. Например, его производит функция alert .
var a = true; alert( a ); // "true"
Можно также осуществить преобразование явным вызовом String(val) :
alert( String(null) === "null" ); // true
Как видно из примеров выше, преобразование происходит наиболее очевидным способом, «как есть»: false становится «false» , null – «null» , undefined – «undefined» и т.п.
Также для явного преобразования применяется оператор «+» , у которого один из аргументов строка. В этом случае он приводит к строке и другой аргумент, например:
alert( true + "test" ); // "truetest" alert( "123" + undefined ); // "123undefined"
Численное преобразование
Численное преобразование происходит в математических функциях и выражениях, а также при сравнении данных различных типов (кроме сравнений === , !== ).
Для преобразования к числу в явном виде можно вызвать Number(val) , либо, что короче, поставить перед выражением унарный плюс «+» :
var a = +"123"; // 123 var a = Number("123"); // 123, тот же эффект
| Значение | Преобразуется в. |
|---|---|
| undefined | NaN |
| null | 0 |
| true / false | 1 / 0 |
| Строка | Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то 0 , иначе из непустой строки «считывается» число, при ошибке результат NaN . |
// после обрезания пробельных символов останется "123" alert( +" \n 123 \n \n" ); // 123
alert( +true ); // 1 alert( +false ); // 0
alert( "\n0 " == 0 ); // true
alert( "\n" == false ); alert( "1" == true );
Специальные значения
Посмотрим на поведение специальных значений более внимательно.
Интуитивно, значения null/undefined ассоциируются с нулём, но при преобразованиях ведут себя иначе.
Специальные значения преобразуются к числу так:
| Значение | Преобразуется в. |
|---|---|
| undefined | NaN |
| null | 0 |
Это ведёт к забавным последствиям.
Например, null не подчиняется законам математики – он «больше либо равен нулю»: null>=0 , но не больше и не равен:
alert( null >= 0 ); // true, т.к. null преобразуется к 0 alert( null > 0 ); // false (не больше), т.к. null преобразуется к 0 alert( null == 0 ); // false (и не равен!), т.к. == рассматривает null особо.
Значение undefined вообще «несравнимо»:
alert( undefined > 0 ); // false, т.к. undefined -> NaN alert( undefined == 0 ); // false, т.к. это undefined (без преобразования) alert( undefined < 0 ); // false, т.к. undefined ->NaN
Для более очевидной работы кода и во избежание ошибок лучше не давать специальным значениям участвовать в сравнениях > >= <
Используйте в таких случаях переменные-числа или приводите к числу явно.
Логическое преобразование
Преобразование к true/false происходит в логическом контексте, таком как if(value) , и при применении логических операторов.
Все значения, которые интуитивно «пусты», становятся false . Их несколько: 0 , пустая строка, null , undefined и NaN .
Остальное, в том числе и любые объекты – true .
Полная таблица преобразований:
| Значение | Преобразуется в. |
|---|---|
| undefined , null | false |
| Числа | Все true , кроме 0 , NaN — false . |
| Строки | Все true , кроме пустой строки «» — false |
| Объекты | Всегда true |
Для явного преобразования используется двойное логическое отрицание !!value или вызов Boolean(value) .
Обратите внимание: строка «0» становится true
В отличие от многих языков программирования (например PHP), «0» в JavaScript является true , как и строка из пробелов:
alert( !!"0" ); // true alert( !!" " ); // любые непустые строки, даже из пробелов - true!
Логическое преобразование интересно тем, как оно сочетается с численным.
Два значения могут быть равны, но одно из них в логическом контексте true , другое – false .
Например, равенство в следующем примере верно, так как происходит численное преобразование:
alert( 0 == "\n0\n" ); // true
… А в логическом контексте левая часть (0) даст false , правая («\n0\n») – true , так как любая не пустая строка в логическом контексте равна true :
if ("\n0\n")
С точки зрения преобразования типов в JavaScript это совершенно нормально. При сравнении с помощью «==» – численное преобразование, а в if – логическое, только и всего.
Итого
В JavaScript есть три преобразования:
- Строковое: String(value) – в строковом контексте или при сложении со строкой. Работает очевидным образом.
- Численное: Number(value) – в численном контексте, включая унарный плюс +value . Происходит при сравнении разных типов, кроме строгого равенства.
- Логическое: Boolean(value) – в логическом контексте, можно также сделать двойным НЕ: !!value .
Точные таблицы преобразований даны выше в этой главе.
Особым случаем является проверка равенства с null и undefined . Они равны друг другу, но не равны чему бы то ни было ещё, этот случай прописан особо в спецификации.