将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); 

 




posted @ 2021-07-02 16:16  执手听风吟  阅读(3521)  评论(0编辑  收藏  举报