面试官问:如何拆解URL参数中queryString
前端瓶子君
共 1924字,需浏览 4分钟
·
2021-04-17 07:06
入参格式参考:
const url = 'http://sample.com/?a=1&b=2&c=xx&d=2#hash';
出参格式参考:
const result = { a: '1', b: '2', c: 'xx', d: '' };
// 拆解URL参数中queryString,返回一个 key - value 形式的 object
解答一:正则
const queryString = (str)=>{
const obj = {}
str.replace(/([^?&=]+)=([^&]+)/g, (_, k, v) => (obj[k] = v))
return obj
}
解答二:URLSearchParams
function getParams(u: URL) {
const s = new URLSearchParams(u.search)
const obj = {}
s.forEach((v, k) => (obj[k] = v))
return obj
}
const url = 'http://sample.com/?a=1&b=2&c=xx&d=2#hash';
getParams(new URL(url))
解答三:字符串分割
字符串分割拿到参数相关的字符串,再做类型转换
const dismantle = (url) => {
const aimUrl = url.split('?').pop().split('#').shift().split('&');
const res = {};
aimUrl.forEach(item => {
const [key, val] = item.split('=');
res[key] = val;
});
return res;
}
公众号内回复【正则】
免费领取【JavaScript 正则表达式迷你书.pdf】
来源:https://github.com/sisterAn/JavaScript-Algorithms
最后
评论