从包含字符串的数组中提取数字 - Javascript?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我有一个字符串和数字的数组。我需要对数字进行排序或更好地仅提取另一个数组中的数字。这是一个例子:

 const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']

我需要这样做

 const filtered = [23456, 34, 23455]

我使用split('')方法用逗号分隔它们但不知道如何为JS过滤它们都是字符串。

提问于
用户回答回答于

这可能是一个可能的解决方案,

请参阅MDN for map()replace()trim()split()

const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.'];
filtered = myArr[0].replace(/\D+/g, ' ').trim().split(' ').map(e => parseInt(e));
console.log(filtered);

要么

const regex = /\d+/gm;
const str = `Prihodi 23456 danaci 34 razhodi 23455 I drugi`;
let m;
const filter = [];
while ((m = regex.exec(str)) !== null) {
  // This is necessary to avoid infinite loops with zero-width matches
  if (m.index === regex.lastIndex) {
    regex.lastIndex++;
  }

  // The result can be accessed through the `m`-variable.
  m.forEach((match, groupIndex) => {
    filter.push(parseInt(match))
  });
}

console.log(filter);
用户回答回答于
const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']
const reduced = myArr[0].split(' ').reduce((arr, item) => {
  const parsed = Number.parseInt(item)
  if(!Number.isNaN(parsed)) arr.push(parsed)
  return arr
}, [])
console.log(reduced)

扫码关注云+社区

领取腾讯云代金券