从字符串JS / Lodash / TypeScript获取数字

时间:2019-01-25 12:33:18

标签: javascript typescript lodash

我有一个以字符串形式出现的链接,例如:

 let data = [
         '/api/customer’,
         '/api/customer/123’,
         '/api/customer/123/details’
    ];

如果有数字ID,我需要提取数字ID。我发现的唯一方法是通过_.isNaN():

const myStrArray = type.split('/');
const numericsArray = _.filter(myStrArray, urlPart => !_.isNaN(parseInt(urlPart, 10)));
const id = numericsArray[0]; // undefined/123

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用Array.flatMap()(或lodash _.flatMap())对数组进行迭代,并将String.match()与RegExp一起使用以获取数字序列。

注意:此RegExp假定这些是字符串中唯一的数字。如果可能还有其他数字,您可能需要对其进行微调。

 let data = [
   '/api/customer',
   '/api/customer/123',
   '/api/customer/123/details'
];

const result = data.flatMap(str => str.match(/\d+/));

console.log(result);

答案 1 :(得分:0)

用户正则表达式以及Array#mapArray#flat就像这样。如果找不到数字,则需要使用||[]

const data = [
  '/api/custome',
  '/api/customer/123',
  '/api/customer/123/details'
];

const res = data.map(a=>a.match(/\d+/)||[]).flat();

console.log(res);