将url参数转为对象
例如:https://www.baidu.com/baidu?name=aaa&age=20
我们想把参数转变成对象,以备随时使用,现推荐两种方法
方法一:
let urlToJson = (url = window.location.href) => { // 箭头函数默认传值为当前页面url
let obj = {},
index = url.indexOf('?'), // 看url有没有参数
params = url.substr(index + 1); // 截取url参数部分 name = aaa & age = 20
if(index != -1) { // 有参数时
let parr = params.split('&'); // 将参数分割成数组 ["name = aaa", "age = 20"]
for(let i of parr) { // 遍历数组
let arr = i.split('='); // 1) i name = aaa arr = [name, aaa] 2)i age = 20 arr = [age, 20]
obj[arr[0]] = arr[1]; // obj[arr[0]] = name, obj.name = aaa obj[arr[0]] = age, obj.age = 20
}
}
return obj;
}
方法二:
首先获取URL后面的参数
var keywords=window.location.search;//结果:'?name=aaa&age=20'
var keywords=window.location.search.substr(1);//结果:'name=aaa&age=20'
开始替换:
var result = keywords.replace(/&/g, '","').replace(/=/g, '":"');
‘/g’这里表示所有,replace(/&/g, ‘","’),这里表示 把所有的&都换成 “,”
补上首尾缺失的部分:
var reqDataString = '{"' + result + '"}';
最后json字符串搞定,需要转成json对象
JSON.parse(reqDataString);
当然,这里还需要做一个 没有 带参数的判断
完整代码如下:
var keywords = window.location.search.substr(1); var result = keywords.replace(/&/g, '","').replace(/=/g, '":"'); var reqDataString = '{"' + result + '"}'; var obj = JSON.parse(reqDataString);

浙公网安备 33010602011771号