将url的查询参数解析成字典对象
Posted 芒果酱-Jessie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将url的查询参数解析成字典对象相关的知识,希望对你有一定的参考价值。
将url的查询参数解析成字典对象,有两种方法:
1.手动解析
1 function getQueryStringArgs(url){ 2 url = url == null ? window.location.href : url; 3 var qs = url.substring(url.lastIndexOf("?") + 1); 4 var args = {}; 5 var items = qs.length > 0 ? qs.split(‘&‘) : []; 6 var item = null; 7 var name = null; 8 var value = null; 9 for(var i=0; i<items.length; i++){ 10 item = items[i].split("="); 11 //用decodeURIComponent()分别解码name 和value(因为查询字符串应该是被编码过的)。 12 name = decodeURIComponent(item[0]); 13 value = decodeURIComponent(item[1]); 14 15 if(name.length){ 16 args[name] = value; 17 } 18 } 19 20 return args; 21 } 22 console.log(getQueryStringArgs(‘https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91‘)); 23 // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}
2.使用正则
1 function getQueryObject(url) { 2 url = url == null ? window.location.href : url; 3 var search = url.substring(url.lastIndexOf("?") + 1); 4 var obj = {}; 5 var reg = /([^?&=]+)=([^?&=]*)/g; 6 // [^?&=]+表示:除了?、&、=之外的一到多个字符 7 // [^?&=]*表示:除了?、&、=之外的0到多个字符(任意多个) 8 search.replace(reg, function (rs, $1, $2) { 9 var name = decodeURIComponent($1); 10 var val = decodeURIComponent($2); 11 val = String(val); 12 obj[name] = val; 13 return rs; 14 }); 15 return obj; 16 } 17 console.log(getQueryObject(‘https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91‘)); 18 // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}
以上是关于将url的查询参数解析成字典对象的主要内容,如果未能解决你的问题,请参考以下文章