2018-08-29

将查询字符串转成对象

什么是查询字符串,比如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为末尾位置索引,包括起始位置,不包括末尾,如果只指定起始位置,默认截取到最后。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 离上一篇更新的博文应该过了挺久的了(python爬虫(上)–请求——关于旅游网站的酒店评论爬取(传参方法))...
    Mrhyden阅读 3,456评论 0 0
  • html, body { width: 100%; height: 100...
    浪巅阅读 2,924评论 0 0
  • NSString filePath = [[NSBundle mainBundle] pathForResourc...
    惊蛰_e3ce阅读 8,668评论 0 0
  • this是 JavaScript 语言的一个关键字。 它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体...
    Creative6阅读 1,124评论 0 0
  • 嘀嗒 嘀嗒 永恒的旋律 创造出人类永恒的奇迹
    从心活过阅读 1,423评论 11 12