1.正则
function queryURLparamsRegEs5(url) {
let obj = {}
let reg = /([^?=&]+)=([^?=&]+)/g
//使用arguments伪数组
url.replace(reg, function() {
//arguments[1]是参数的key;arguments[2]是参数的value
obj[arguments[1]] = arguments[2]
})
//使用...arg剩余参数真数组
//url.replace(reg, (...arg) => {
// obj[arg[1]] = arg[2]
//})
return obj
}
2.for循环遍历
const strFormat = (url) => {
if (typeof url === "string") url = url.split("?")[1] || "";
if (typeof url === "string") url = url.split(/[&=]/);
let r = {};
for (let i = 0; i < url.length; i = i + 2) {
if (url[i]) {
r[url[i]] = url[i + 1];
}
}
return r;
};
3.URLSearchParams
var url = "http://test.com/test?a=1&b=2&c=3&a=4";
//使用new URLSearchParams(url)获取不到第一个参数a;使用url.split('?')[1]分割之后能正常获取到
var params = new URLSearchParams(url.split('?')[1]);
//get方法可以获取到参数中的第一个a
console.log(url.split('?')[1], params.get('a')) //a=1&b=2&c=3 1
//getAll方法可以获取到参数中全部的a,返回的是一个数组
console.log(params.getAll('a')) //[1,4]
//has方法,可以判断url中是否包含某个参数
console.log(params.has('a')) //true