Перейти к содержимому

Как строку превратить в число js

  • автор:

Как перевести число в строку в 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 очень проста, но отличается от других языков. Поэтому она часто служит «камнем преткновения» для приходящих из других языков программистов.

Всего есть три преобразования:

  1. Строковое преобразование.
  2. Численное преобразование.
  3. Преобразование к логическому значению.

Эта глава описывает преобразование только примитивных значений, объекты разбираются далее.

Строковое преобразование

Строковое преобразование происходит, когда требуется представление чего-либо в виде строки. Например, его производит функция 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 есть три преобразования:

  1. Строковое: String(value) – в строковом контексте или при сложении со строкой. Работает очевидным образом.
  2. Численное: Number(value) – в численном контексте, включая унарный плюс +value . Происходит при сравнении разных типов, кроме строгого равенства.
  3. Логическое: Boolean(value) – в логическом контексте, можно также сделать двойным НЕ: !!value .

Точные таблицы преобразований даны выше в этой главе.

Особым случаем является проверка равенства с null и undefined . Они равны друг другу, но не равны чему бы то ни было ещё, этот случай прописан особо в спецификации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *