Получить номер из строки JS / Lodash / TypeScript - PullRequest
0 голосов
/ 25 января 2019

У меня есть ссылка в виде строки, например:

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

Мне нужно извлечь числовой идентификатор, если он есть. Единственный способ, который я нашел - это корыто _.isNaN ():

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

Есть ли лучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Пользовательское регулярное выражение и Массив # map и Массив # flat примерно так.Вам нужно использовать ||[], если номер не найден.

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

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

console.log(res);
0 голосов
/ 25 января 2019

Вы можете перебрать массив с помощью 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);
...