2 回答

TA貢獻(xiàn)1801條經(jīng)驗 獲得超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貢獻(xiàn)1816條經(jīng)驗 獲得超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"]
解釋:
分割以
&
獲取鍵/值對對于每個鍵/值:
提取值
將值分割為
'
將數(shù)組的結(jié)果展平為
[].concat.apply([], arr)
或者,您可以初始化一個空數(shù)組[]
,并作為每個鍵/值的最后一步,對每個項目執(zhí)行 forEach 操作,并將其推送到數(shù)組中。
添加回答
舉報