Можно сделать вот так:
const arr = ['d,gm56', 'sdgf23dsg', 'ds14gsd']
function onlyNumbers(data) {
let resultArr = []
for (let i = 0; i < data.length; i++) {
const str = data[i]
const number = str.replace(/\D/g, '')
if(number) {
resultArr.push(number)
}
}
return resultArr
}
const result = onlyNumbers(arr)
console.log(result)
Объяснение
В строке которую вы получаем я убираю всё что не является числом с помощью метода replace
. В методе написано регулярное выражение \D
(оно означает НЕ число), оно равноценно такой записи: [^\d]
, а эта запись в свою очередь равноценна этой: [^0-9]
. Я добавил флаг g
в конце регулярного выражения чтобы оно применялось на всю строку, а не только на первый символ. Дальше идёт проверка number
, проверяется являться ли она falsy, чуть подробнее можно прочитать тут или же тут, сейчас только упомяну, что если переменная number
пустая (то-есть длина строки равна нулю), то тогда она считается falsy и проверку не проходит, соответственно не попадает в массив с результатами. Если же number
валидно (то-есть является truthy), то тогда оно попадает в массив с результатами.