获取网址url查询参数快速转换为对象

2019-05-291671次阅读javascript
let getQueryParameters = function(str){
  return (str || document.location.search).replace(/(^\?)/,'').split("&").map(function(n){return n = n.split("="),this[n[0]] = n[1],this}.bind({}))[0];
}

代码值得细看,正则的运用,返回值,逗号操作符,this的绑定....

如果URL是http://fanyi.baidu.com/translate?aldtype=16047&query=require&keyfrom=baidu&smartresult=dict&lang=auto2zh

执行:

getQueryParameters();

得到:

{
aldtype: "16047",
query: "require", 
keyfrom: "baidu", 
smartresult: "dict", 
lang: "auto2zh"
}

上面代码用到了Array​.prototype​.map(),浏览器兼容只有IE9+。在此代码基础之上又改写了一个兼容低版本的:

var getQueryParameters = function(str){
        var ary = (str || document.location.search).replace(/(^\?)/,'').split("&");
        var obj = {};
        if( !!ary.map ) return ary.map(function(n){return n = n.split("="),this[n[0]] = decodeURIComponent( n[1] ),this}.bind({}))[0];
        for(var i = 0,len = ary.length; i < len ;i++){
            var arrays = ary[i].split("=");
            obj[arrays[0]] = decodeURIComponent( arrays[1] );
        }
        return obj;
};

 

上一篇: css属性值initial、inherit、unset关键字区别  下一篇: js隐式类型转换  

获取网址url查询参数快速转换为对象相关文章