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"]
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 操作,并将其推送到数组中。
添加回答
举报