将查询字符串转成对象
什么是查询字符串,比如https://www.baidu.com/s?wd=%E6%BB%B4%E6%BB%B4%E4%B8%93%E8%BD%A6&rsv_spt=1&rsv_iqid=0xc52161d3000a1bfe&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=request_27_pg&rsv_enter=1&rsv_sug3=15&rsv_sug1=15&rsv_sug7=100&rsv_sug2=1&prefixsug=didi&rsp=0&inputT=12304&rsv_sug4=19421中,?号后面的一长串字符串就是查询字符串。将其转成对象,一般思路是这样的:
var url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&ch=&tn=baidu&bar=&wd=html5&rsv_spt=1&oq=html5&rsv_pq=c0ac99550006b9f5&rsv_t=3a1dw%2FlScBMgLMacb03K8fwy85uK0G8tG8tC1F%2BwJVcK8RR0lLJR%2BVZ2wtg&rqlang=cn";
function parseQueryString(url) {
//找到?的索引
var index = url.indexOf("?");
//截取?后面的字符串
var queryString = url.slice(index + 1);
//使用&分割字符串
var array = queryString.split("&");
console.log(array);
//遍历数组,生成对象
var obj = {};
array.forEach(function(currentVal) {
//用=将array数组里的元素如:ie=utf-8分解为数组parts
var parts = currentVal.split("=");
var name = parts.shift(); //返回删除的值,放入name,此时parts剩下一个元素
var value = parts.shift();//这里也可以使用pop()方法
obj[name] = value; //添加对象属性
});
console.log(obj);
return obj;
}
parseQueryString(url);//执行函数
在截取字符串的时候,也可以使用slice(start,end),start为起始位置的索引,end为末尾位置索引,包括起始位置,不包括末尾,如果只指定起始位置,默认截取到最后。
网友评论