实现思路:
先找出?和#的索引,获取?和#后面值,再对问号(或者#)后面详细的值进行处理。
看下面例子:
let url = 'http://lss.lss.com?name=lss&age=22#lss';
let url = 'http://lss.lss.com?name=lss&age=22#lss';
let qIndex = url.indexOf('?');
let Jindex = url.indexOf('#');
let qtext = url.substring(qIndex + 1, Jindex);
let Jtext = url.substring(Jindex);
console.log(qtext, Jtext)
这时已经拿到?和#后面的值,开始分割
qarr = qtext.split('&')
let obj = {};
obj['HASH'] = Jtext;
qarr.forEach(item => {
qarrme = item.split('=');
obj[qarrme[0]] = qarrme[1]
})
console.log(obj)
封装函数:(因为一个地址可能有?也可能没有,可能有#也可能没有#)
// 封装函数queryURLParams
// @params:url
// @return:参数
function queryURLParams(url) {
let askIn = url.indexOf('?'),
wellIn = url.indexOf('#'),
askText = '',
wellText = '';
// #不存在
wellIn === -1 ? wellIn = url.length : null;
// ?存在
askIn >= 0 ? askText = url.substring(askIn + 1, wellIn) : null;
wellText = url.substring(wellIn + 1);
let result = {};
wellText !== '' ? result['HASH'] = wellText : null;
if (askText !== "") {
let ary = askText.split('&');
ary.forEach(item => {
let aryText = item.split('=');
result[aryText[0]] = aryText[1];
})
}
return result;
}