JavaScript | Как извлечь числа из строки?

Функция извлекающая числа из строки

function numFromStr(str){
   return [...str]
   .map(i => {if(isFinite(i) == true || i == "."){return i}else{return " "}})
   .join("")
   .split(" ")
   .filter(i => i != "")
   .map(i => Number(i))
}

Как работает функция?

Принимает строку. Возвращает массив с числами.

Шаг 1 — приводим строку к массиву.

Шаг 2 — проходим по каждому элементу массива и проверяем условие возможности приведения символа к цифре. Если можно, то возвращаем, иначе возвращаем один пробел. (он будет разделителем в будущем). isFinite(number) определяет можно ли символ привести к цифре. Например строку «5» привести к числу 5.

Шаг 3 — склеиваем элементы массива в одну строку.

Шаг 4 — Разделяем строку по разделителю — по пробелу.

Шаг 5 — Фильтруем массив. Отбираем элементы со значениями не равными пустой строке.

Шаг 6 — Приводим строки к числам

Пример строки — Скопируй функцию и протестируй в консоли браузера!

var stroka = "100ыптлцг%;Р(Р№0.5лмк)№?ХЪС0.5ьмфщгугруа1БЮыпаКсывУКА20"

numFromStr(stroka)
Извлекли числа из строки - JavaScript
Извлекли числа из строки — JavaScript

 

Информационные ссылки

JavaScript | Строки (String)

JavaScript | Массивы (Array)

Стандарт ECMAScript — Раздел «19.2.2 isFinite ( number )» — https://tc39.es/ecma262/#sec-isfinite-number

Поделись записью