我有一个以字符串形式出现的链接,例如:
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
有更好的方法吗?
答案 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#map和Array#flat就像这样。如果找不到数字,则需要使用||[]
。
const data = [
'/api/custome',
'/api/customer/123',
'/api/customer/123/details'
];
const res = data.map(a=>a.match(/\d+/)||[]).flat();
console.log(res);