В 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