Как перевести строку в число javascript
Перейти к содержимому

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

  • автор:

Преобразование типов

Чаще всего операторы и функции автоматически приводят переданные им значения к нужному типу.

Например, alert автоматически преобразует любое значение к строке. Математические операторы преобразуют значения к числам.

Есть также случаи, когда нам нужно явно преобразовать значение в ожидаемый тип.

Пока что мы не говорим об объектах

В этой главе мы не касаемся объектов. Сначала мы разберём преобразование примитивных значений.

Мы разберём преобразование объектов позже, в главе Преобразование объектов в примитивы.

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

Строковое преобразование происходит, когда требуется представление чего-либо в виде строки.

Например, alert(value) преобразует значение к строке.

Также мы можем использовать функцию String(value) , чтобы преобразовать значение к строке:

let value = true; alert(typeof value); // boolean value = String(value); // теперь value это строка "true" alert(typeof value); // string

Преобразование происходит очевидным образом. false становится «false» , null становится «null» и т.п.

Численное преобразование

Численное преобразование происходит в математических функциях и выражениях.

Например, когда операция деления / применяется не к числу:

alert( "6" / "2" ); // 3, строки преобразуются в числа

Мы можем использовать функцию Number(value) , чтобы явно преобразовать value к числу:

let str = "123"; alert(typeof str); // string let num = Number(str); // становится числом 123 alert(typeof num); // number

Явное преобразование часто применяется, когда мы ожидаем получить число из строкового контекста, например из текстовых полей форм.

Если строка не может быть явно приведена к числу, то результатом преобразования будет NaN . Например:

let age = Number("Любая строка вместо числа"); alert(age); // NaN, преобразование не удалось

Правила численного преобразования:

Значение Преобразуется в…
undefined NaN
null 0
true / false 1 / 0
string Пробельные символы (пробелы, знаки табуляции \t , знаки новой строки \n и т. п.) по краям обрезаются. Далее, если остаётся пустая строка, то получаем 0 , иначе из непустой строки «считывается» число. При ошибке результат NaN .
alert( Number(" 123 ") ); // 123 alert( Number("123z") ); // NaN (ошибка чтения числа на месте символа "z") alert( Number(true) ); // 1 alert( Number(false) ); // 0

Учтите, что null и undefined ведут себя по-разному. Так, null становится нулём, тогда как undefined приводится к NaN .

Большинство математических операторов также производит данное преобразование, как мы увидим в следующей главе.

Логическое преобразование

Логическое преобразование самое простое.

Происходит в логических операциях (позже мы познакомимся с условными проверками и подобными конструкциями), но также может быть выполнено явно с помощью функции Boolean(value) .

  • Значения, которые интуитивно «пустые», вроде 0 , пустой строки, null , undefined и NaN , становятся false .
  • Все остальные значения становятся true .
alert( Boolean(1) ); // true alert( Boolean(0) ); // false alert( Boolean("Привет!") ); // true alert( Boolean("") ); // false

Заметим, что строка с нулём «0» — это true

Некоторые языки (к примеру, PHP) воспринимают строку «0» как false . Но в JavaScript, если строка не пустая, то она всегда true .

alert( Boolean("0") ); // true alert( Boolean(" ") ); // пробел это тоже true (любая непустая строка это true)

Итого

Существует 3 наиболее широко используемых преобразования: строковое, численное и логическое.

Строковое – Происходит, когда нам нужно что-то вывести. Может быть вызвано с помощью String(value) . Для примитивных значений работает очевидным образом.

Численное – Происходит в математических операциях. Может быть вызвано с помощью Number(value) .

Преобразование подчиняется правилам:

Значение Становится…
undefined NaN
null 0
true / false 1 / 0
string Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то получаем 0 , иначе из непустой строки «считывается» число. При ошибке результат NaN .

Логическое – Происходит в логических операциях. Может быть вызвано с помощью Boolean(value) .

Значение Становится…
0 , null , undefined , NaN , «» false
любое другое значение true

Большую часть из этих правил легко понять и запомнить. Особые случаи, в которых часто допускаются ошибки:

  • undefined при численном преобразовании становится NaN , не 0 .
  • «0» и строки из одних пробелов типа » » при логическом преобразовании всегда true .

В этой главе мы не говорили об объектах. Мы вернёмся к ним позже, в главе Преобразование объектов в примитивы, посвящённой только объектам, сразу после того, как узнаем больше про основы JavaScript.

JavaScript: преобразование значений в строку или число

В JavaScript можно выполнить преобразование числа в строку или строки в число. В целом, система преобразования типов в JS довольно проста, но несколько отличается от других языков программирования. Чтобы она не стала для вас камнем преткновения, мы подготовили специальную статью. Разбирать будем преобразование примитивных значений.

Преобразование в строку в JavaScript

Если мы хотим что-либо представить в виде строки, речь идёт о строковом преобразовании.

К примеру, значение к строке преобразует alert(value) . Также для преобразования в строку подходит функция String(value) :

 
let value = true; alert(typeof value); // boolean value = String(value); // теперь value — это строка "true" alert(typeof value); // string

В данном случае преобразование в JavaScript выполняется очевидным способом, ведь false становится "false", а null становится "null" и так далее.

Преобразование в число в JavaScript

Преобразование в число (численное преобразование) осуществляется в математических функциях и выражениях. Допустим, когда операция деления (/) применяется не к числу:

 
alert( "6" / "2" ); // 3, Строки преобразовываются в числа

Кроме того, можно задействовать функцию Number(value) — это позволит явно преобразовать value к числу:

 
let str = "123"; alert(typeof str); // string let num = Number(str); // станет числом 123 alert(typeof num); // number

Также применяется явноe преобразование в число. Это актуально, если мы ожидаем получить, допустим, число из строкового контекста (к примеру, из текстовых полей форм).

Когда строка не может быть приведена к числу явно, результатом преобразования станет NaN:

 
let age = Number("Любая строка вместо числа"); alert(age); // NaN, преобразование не получилось

Существуют правила преобразования в число:

1-20219-a49f75.png

А теперь приведём примеры:

 
alert( Number(" 123 ") ); // 123 alert( Number("123z") ); // NaN (ошибка чтения числа в "z") alert( Number(true) ); // 1 alert( Number(false) ); // 0

Обратите внимание, что undefined и null и ведут себя по-разному. Если null становится нулём, то undefined приводится к NaN.

Кроме того, нужно учесть, что сложение (+) объединяет строки. Как известно, практически все математические операторы выполняют преобразование в число. Исключением является + . Если одно из слагаемых будет строкой, все остальные тоже приведутся к строкам.

Речь идёт о конкатенации (присоединении) друг к другу:

 
alert( 1 + '2' ); // '12' (строка справа) alert( '1' + 2 ); // '12' (строка слева)

Такое происходит, когда хотя бы один из аргументов — это строка. В остальных случаях значения складываются, как числа.

Логическое преобразование в JavaScript

Кроме преобразования в число и строку, в JavaScript существует и логическое преобразование. Это преобразование в JavaScript является наиболее простым и происходит в логических операторах. Вдобавок к этому, может выполняться посредством функции Boolean(value) .

Правила логического преобразования: — интуитивно «пустые» значения (типа пустой строки, 0, undefined, null и NaN) становятся false; — все прочие значения становятся true.

 
alert( Boolean(1) ); // true alert( Boolean(0) ); // false alert( Boolean("Здравствуйте!") ); // true alert( Boolean("") ); // false

Ещё один нюанс

Следует заметить, что строка с нулём "0" — это true. Некоторые языки программирования (тот же PHP) воспринимают строку "0" в качестве false. Однако в JavaScript всё иначе, и если строка не является пустой, она всегда true.

 
alert( Boolean("0") ); // true alert( Boolean(" ") ); // пробел — это тоже true (любая непустая строка является true)

Делаем выводы

Итак, в JavaScript есть три самых популярных преобразований: в строку, в число и логическое преобразование. Вспомним основные моменты статьи для наилучшего усвоения материала: 1.Преобразование в строку — происходит, если нужно что-то вывести. Вызывается посредством String(value) . Работает очевидным образом (для примитивных значений).
2.Преобразование в число — происходит в математических операциях. Вызывается посредством Number(value) . Подчиняется правилам:

1-20219-a49f75.png

3.Логическое преобразование — происходит в логических операторах. Вызывается Boolean(value) , подчиняется правилам:

2-20219-0fa36e.png

В целом правила несложны и запоминаются довольно легко. Тем не менее начинающие разработчики на JavaScript могут допускать следующие ошибки: — undefined при численном преобразовании становится не 0 , а NaN; — при логическом преобразовании "0" и строки из одних пробелов типа " " всегда являются true.

как перевести из строки в число js

Функция parseInt() преобразует строку в число и возвращает целочисленное значение. Если строка начинается с нечисловых символов, то parseInt() игнорирует их и считывает только числовую часть. Если же строка не содержит чисел, то parseInt() вернет NaN .

console.log(parseInt('123')); // 123 console.log(parseInt('123px')); // 123 console.log(parseInt('abc')); // NaN 

Преобразование строки в число в 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

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

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