实现一个方法queryURLParameter获取一个URL地址问号后面传递的参数信息
方法一
let url = 'http://www.nylg.cn/index.html?1x=1&name=nylg#box';
let askIndex = url.indexOf('?'),
wellIndex = url.indexOf('#');
let askText = url.substring(askIndex + 1, wellIndex);
let wellText = url.substring(wellIndex + 1);
console.log(askText,wellText);
let result = {};
let askAry = askText.split('&');
askAry.forEach(item => {
let n = item.split('=');
let key = n[0];
let value = n[1];
result[key] = value;
});
result['HASH'] = wellText;
console.log(result);
方法二
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 itemAry = item.split('=');
result[itemAry[0]] = itemAry[1];
});
}
return result;
}
let url = 'http://www.nylg.cn/index.html?1x=1&name=nylg#box';
let paramsObj = queryURLParams(url);
console.log(paramsObj);
方法三,基于正则封装
function queryURLParams(url) {
let result = {},
reg1 = /([^?=&#]+)=([^?=&#]+)/g,
reg2 = /#([^?=&#]+)/g;
url.replace(reg1, (n, x, y) => result[x] = y);
url.replace(reg2, (n, x) => result['HASH'] = x);
return result;
}
let url = 'http://www.nylg.cn/index.html?1x=1&name=nylg#box';
let paramsObj = queryURLParams(url);
console.log(paramsObj);