-3

Есть строка. Нужно выделить и отобразить цифры. Указанный код работает. Представим массив из n строк. Нужно вывести массив с цифрами из каждой строки

let data = {
  volume: ''
}
let arr = 'goodby! 78 .'
let number = ''
for (const word of arr) {
  if ('0123456789'.includes(word)) {
    number += word
  }
}
data.volume = number
console.log(data)
ksa
  • 6,872

3 Answers3

1

let arr1 = ['d,gm56', 'sdgf23dsg', 'ds14gsd'];
let arr2 = ['234d,gm56', 'sdgf23dsg', 'dsgsd', 'sdgg22'];

const test = arr => arr.join('').match(/\d+/g);

console.log(test(arr1)); console.log(test(arr2));

0

Можно так попробовать решить. Хотя, возможно, коллеги смогут предложить решения без двойного обхода

let test = ['d,gm56', 'sdgf23dsg', 'ds14gsd', 'testword', '12312sdfsdf99'];

let arr = []

function getNumbers(testArray) { testArray.forEach(function(elem) { let matches = elem.match(/\d+/g); if (matches) { matches.forEach(function(match) { arr.push(parseInt(match)); }); } }); return arr; }

console.log(getNumbers(test));

0

Можно сделать вот так:

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), то тогда оно попадает в массив с результатами.

ΝNL993
  • 3,453