Возврат всех указанных целых чисел из строки в массив - PullRequest
1 голос
/ 07 мая 2020

URL-запрос после decodeURIComponent и split() выглядит так: ["pcs_availability:Online", "price:[1500 TO 1999.99]"] результаты, которые я ищу, возвращают массив с правильным целым числом, например [1999.99]. Но в строке запроса URL может быть больше одного ценового диапазона, например ["pcs_availability:Online", "price:[250 TO 499.99]:[500 TO 999.99]:[1500 TO 1999.99]"]. Что должно вернуть [499.99, 999.99, 1999.99]. Я забыл упомянуть, что расположение цен в массиве могло отличаться в зависимости от других URL-запросов. Так что не всегда можно гарантировать, что он будет в одном и том же месте.

Это был выбранный подход.

const pattern = /^price:{1,2}\[.*? TO (.*)]$/;
const price = query
  .map(q => {
    const match = pattern.exec(q);
    return match;
  });

Что возвращает это. Я попытался изменить регулярное выражение, но, к сожалению, мне не удалось получить результаты, которые я ищу.

["price:[250 TO 499.99]:[500 TO 999.99]:[1500 TO 1999.99]", "1999.99", index: 0, input: "price:[250 TO 499.99]:[500 TO 999.99]:[1500 TO 1999.99]", groups: undefined]

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Во-первых, сохраните нужную строку в переменной - затем split в первой части ("price"), а затем просто map остальную часть с числами и регулярным выражением с сопоставлением точек, преобразуя в число в конец:

const data = ["pcs_availability:Online", "price:[250 TO 499.99]:[500 TO 999.99]:[1500 TO 1999.99]"];

let str = data.find(e => e.includes("price"));

let [,...allPrices] = str.split(":");

let prices = allPrices.map(s => s.split("TO")[1].match(/[0-9\.]+/)[0]);

prices = prices.map(n => +n);

console.log(prices);
.as-console-wrapper { max-height: 100%; top: auto; }
2 голосов
/ 07 мая 2020

Это сработает для вас?

const arr = ["pcs_availability:Online", "price:[250 TO 499.99]:[500 TO 999.99]:[1500 TO 1999.99]"]

      result = arr
        .find(e => e.includes('price'))
        .match(/(?<=TO )\d+\.\d+/g)
      
console.log(result)
.as-console-wrapper{min-height:100%;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...