Javascript 将字符串中的所有指定整数返回到数组中

Javascript 将字符串中的所有指定整数返回到数组中,javascript,arrays,regex,reactjs,ecmascript-6,Javascript,Arrays,Regex,Reactjs,Ecmascript 6,decodeURIComponent和拆分后的URL查询如下[pcs_availability:Online,price:[1500到1999.99]]我要查找的结果是返回一个具有正确整数的数组,如[1999.99]。但URL查询字符串中可以有多个价格范围,例如[pcs_可用性:在线,价格:[250至499.99]:[500至999.99]:[1500至1999.99]]。应该返回[499.99999.991999.99]。我忘了提到数组中的价格定位可能会因其他URL查询的不同而有所不同。所以它

decodeURIComponent和拆分后的URL查询如下[pcs_availability:Online,price:[1500到1999.99]]我要查找的结果是返回一个具有正确整数的数组,如[1999.99]。但URL查询字符串中可以有多个价格范围,例如[pcs_可用性:在线,价格:[250至499.99]:[500至999.99]:[1500至1999.99]]。应该返回[499.99999.991999.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]

那对你有用吗

const arr=[pcs_可用性:在线,价格:[250至499.99]:[500至999.99]:[1500至1999.99]] 结果=arr .finde=>e.包括“价格”
.match/?这对您有用吗

const arr=[pcs_可用性:在线,价格:[250至499.99]:[500至999.99]:[1500至1999.99]] 结果=arr .finde=>e.包括“价格”
.match/?首先,将您想要的字符串保存到一个变量中,然后拆分第一部分价格,然后用数字和点匹配正则表达式映射其余部分,最后转换为数字:

const data=[pcs_可用性:在线,价格:[250至499.99]:[500至999.99]:[1500至1999.99]; 设str=data.finde=>e.includeprice; 让[,…所有价格]=str.split:; 让prices=allPrices.maps=>s.splitTO[1]。匹配/[0-9\.]+/[0]; prices=prices.mapn=>+n; 价格;
。作为控制台包装器{max height:100%;top:auto;}首先,将您想要的字符串保存到一个变量中,然后拆分第一部分的价格,然后用数字和点匹配的正则表达式映射其余部分,最后转换成一个数字:

const data=[pcs_可用性:在线,价格:[250至499.99]:[500至999.99]:[1500至1999.99]; 设str=data.finde=>e.includeprice; 让[,…所有价格]=str.split:; 让prices=allPrices.maps=>s.splitTO[1]。匹配/[0-9\.]+/[0]; prices=prices.mapn=>+n; 价格;

.as console wrapper{max height:100%;top:auto;}有人说Regex的同义词是遗憾:你愿意为此使用Regex吗?一个简单的函数更具可读性,这在经验丰富的开发人员中通常是优先考虑的floats@BrianPatterson不,一点也不,我的第一个解决方案是这样的:const price=query.finditem=>item.matchprice.split/:::::::/[1]。split[2]。replace];。但是我没能得到我想要的结果。有人说Regex的同义词是后悔:你结婚了吗?一个简单的函数更具可读性,这在经验丰富的开发人员中通常是优先考虑的floats@BrianPatterson不,一点也不,我的第一个解决方案是这样的:const price=query.finditem=>item.matchprice.split/:::::::/[1]。split[2]。replace];。但是我没能得到我想要的结果。哇,真是太好了!唯一的问题是,它目前是一个类似于[pcs_可用性:在线,价格:[250至499.99]:[500至999.99]:[1500至1999.99]]的阵列。否则,您的答案是完美的。我刚刚做了.toString.match,但有没有更有效的方法不必做.toString?它是一个有效数组,只要arr[1]就可以得到包含价格的字符串。虽然如果价格指数不能保证,那就不可靠了。@steven5210:我的坏孩子要睡觉了;,查看最新的编辑器str=>{r.push…str.match/?哇,太棒了!唯一的问题是它目前是一个类似[pcs_可用性:在线,价格:[250到499.99]:[500到999.99]:[1500到1999.99]]的数组。否则,您的答案是完美的。无论我刚刚做了.toString.match,但有没有一种更有效的方法不必做.toString?它是一个有效数组,只需arr[1]将获取包含价格的字符串。尽管如果价格指数不能保证,这将是不可靠的。@steven5210:my bad got to sleep;,请查看最新的编辑,str=>{r.push…str.match/?抱歉,我忘了提及价格可能不总是在数组中的相同位置/索引,具体取决于其他数据。我将更新我的postfix@steven5210@steven5210:请注意,要达到这个效果,行数越少越好。虽然行数越多,vi越大rtue的可读性,也可能会给人一种克服困难的感觉;对不起,我忘了提到,根据其他数据,价格在数组中可能并不总是处于相同的位置/索引。我将更新我的postFixed@steven5210@steven5210当前位置请注意,这里肯定有 用较少的行和行来保存结果。虽然,对行数越多的人来说,可读性越强,也可能给人一种克服巨大困难的感觉;