为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript - 提取位于两个特殊字符之间的字符串部分

Javascript - 提取位于两个特殊字符之间的字符串部分

慕斯王 2023-10-20 16:55:08
我有这样的字符串-countries=a,b&states=c,d&districts=e,f,g,hcountries=a,b我想提取字符串中位于字符之间的部分=,&并将结果作为数组返回。所以,在第一种情况下,结果应该是['a','b', 'c','d','e','f','g','h']。对于第二种情况,应该是['a','b']。我通过这样做达到了结果-const extract = string.split('&');const splitArray = extract.map(x => x.split('=')[1]);const resultString = splitArray.join(',');const result = resultString.split(',');我能做得更简洁、更好吗?
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

使用URLSearchParams 的一个示例

let query = 'countries=a,b&states=c,d&districts=e,f,g,h';

let values = [];


(new URLSearchParams(query)).forEach(function(v) { 

    v.split(',').forEach(function(v){

        values.push(v);

    });

});


console.log(values); // ["a", "b", "c", "d", "e", "f", "g", "h"]

...但是如果“简洁”你的意思是“一行”..那么这是我的看法:


let query = 'countries=a,b&states=c,d&districts=e,f,g,h';


query = query.replace(/(^|&).*?=/g,',').split(',').filter(Boolean);


console.log(query); // ["a", "b", "c", "d", "e", "f", "g", "h"]


查看完整回答
反对 回复 2023-10-20
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

const input = [

  'countries=a,b&states=c,d&districts=e,f,g,h',

  'countries=a,b'

];

input.forEach((line) => {

  let result = [].concat.apply([], line

    .split(/&/)

    .map((keyValue) => {

      return keyValue.replace(/^[^=]*=/, '').split(/,/)

    }));

  console.log(line + ' ==> ' + JSON.stringify(result));

});

输出:

countries=a,b&states=c,d&districts=e,f,g,h ==> ["a","b","c","d","e","f","g","h"]
countries=a,b ==> ["a","b"]

解释:

  • 分割以&获取键/值对

  • 对于每个键/值:

    • 提取值

    • 将值分割为'

  • 将数组的结果展平为[].concat.apply([], arr)

或者,您可以初始化一个空数组[],并作为每个键/值的最后一步,对每个项目执行 forEach 操作,并将其推送到数组中。


查看完整回答
反对 回复 2023-10-20
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信