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

我有这样的字符串-


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

countries=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(',');

我能做得更简洁、更好吗?


慕斯王
浏览 117回答 2
2回答

蝴蝶刀刀

使用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"]

繁华开满天机

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 操作,并将其推送到数组中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript