#引子
工作中经常需要获取浏览器地址栏URL的参数,常用的套路便是将这些参数转化为键值对,方法有许多,我喜欢简单明了,所以尝试自己总结下。
#过程
首先,获取参数字符串
location.search.slice(1);
然后,将参数转为数组,然后在数组里做文章。
var pairs=location.search.slice(1).split('&');
接下来,使用forEach遍历pairs
,并在每次遍历时使用=
分隔符,来提取键值对。当然,一些可能遇到的场景也需要考虑下,比如,值为空和使用decodeURIComponent解码一下。
var pairs = location.search.slice(1).split('&');
var result = {};
pairs.forEach(function(pair) {
pair = pair.split('=');
result[pair[0]] = decodeURIComponent(pair[1] || '');
});
最后一步,相当简单,使用JSON.stringify解析一下,然后用JSON.parse再转化回来。
JSON.parse(JSON.stringify(result));
#最终代码
function QueryStringToJSON() {
var pairs = location.search.slice(1).split('&');
var result = {};
pairs.forEach(function(pair) {
pair = pair.split('=');
result[pair[0]] = decodeURIComponent(pair[1] || '');
});
return JSON.parse(JSON.stringify(result));
}
var query_string = QueryStringToJSON();