В 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