let url = 'http://www.douqu.com/index.html?name1=val1&name2=val2';
//1.提取问号后的字符 let asktext = url.substring(url.indexOf('?')+1,url.length); //2.后面值的处理 let askary = asktext.split('&');
askary.forEach((item)=>{
let n = item.split('=');
let key = n[0];
let value = n[1];
result[key] = value;
});
console.log(result);

优化方案,进行函数封装,考虑多种情况

//考虑有无哈希值与问号的存在
/*
@params:url[string]
@return:[object]包含参数和哈希信息的对象
*/
function queryURLParams(url){
let askIn = url.indexOf('?');
let wellIn = url.indexOf('#');
let welltext = '';
let asktext = '';
//#不存在,?存在时所做的事,并获取将要处理的字符片段
wellIn === -1?wellIn=url.length : wellIn;
askIn >= 0?asktext = url.substring(askIn+1,wellIn) : null;
welltext = url.substring(wellIn+1); //处理信息
let result = {};
welltext!=='''?result['hash'] = well : null;
if(asktext!==""){
let ary = asktext.split('&');
ary.forEach((item=>{
let n = item.split('=');
let key = n[0];
let value = n[1];
result[key] = value;
}));
}
return result;
}

正则方式实现

function queryURLParams(){
let result = {};
reg1 = /([^?=&#]+)=([^?=&#]+)/g
reg2 = /#([^?=&#]+)/g
url.replace(reg1,(n,x,y)=>result[x]=y);
url.replace(reg2,(n,x)=>result['hash']=x);
return result;
}
//正则的强大由此可见

queryURLParams的更多相关文章

  1. [转]一步一步asp.net_购物车订单与支付宝

    本文转自:http://www.cnblogs.com/mysweet/archive/2012/05/19/2508534.html 最近这几天很忙,一边忙着准备一堆课程设计(8门专业课.....伤 ...

  2. javaScript用正则来获取url传递的参数

    用window.location.href获取url再js正则来获得需要的参数: 这个正则有多种写法,这里我选择这样写,要查找的属性名我直接以参数的形式传进去,用正则查找,以"?&# ...

随机推荐

  1. Scrapy - 小说爬虫

    实例解析 - 小说爬虫 页面分析 共有三级页面 一级页面 大目录 二级页面 章节目录 三级界面 章节内容 爬取准备 一级界面 http://www.daomubiji.com/ 二级页面xpath 直 ...

  2. Hbase shell操作表

    启动hbase shell ./bin/hbase shell 1.创建表,查看表 create 'tableName', 'familykey1','familykey2',.... eg. cre ...

  3. C++ STL 排序查找最大的5个

    #include <iostream>#include <algorithm>#include <deque>#include <vector>#inc ...

  4. 《图解 HTTP》读书笔记

    <图解 HTTP>一书是日本学者上野宣所著,2014 年由于均良先生翻译并在国内出版.因为作者使用十分生动的语言和浅显易懂的案例将 HTTP 协议讲解得深入浅出,所以深受开发者喜爱.现在在 ...

  5. 一个BADI创建了两个实施会有什么问题呢?

    BADI :LE_SHP_DELIVERY_PROC 创建了两个实施,会导致什么问题呢? 前台测试  调试 VL01N 进了这个断点:ZCL_IM_IM_LE_SHP_DELIV_001 F8之后  ...

  6. gitlab安装、下载、推送 代码(推荐)

    环境: 内存必须5G以上 centos7.5 服务端:192.168.0.74 客户端:192.168.0.73 GitLab的安装 1.在CentOS系统上,下面的命令将会打开系统防火墙HTTP和S ...

  7. JS 事件介绍

    1.设置js对象属性为事件处理程序 事件处理程序属性的名字由“on”后面跟着事件名组成.这些属性名 都必须小写 事件处理程序的缺点:设计都是围绕着假设每个事件目标对于每种事件类型将最多只有一个处理程序 ...

  8. 解决Python-OpenCV中cv2.rectangle报错

    在PyTorch中测试DataLoader读取后的图像,对图像画框cv2.rectangle时报错: TypeError: Layout of the output array img is inco ...

  9. 【ARTS】01_23_左耳听风-201900415~2019004021

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  10. 第一章 python+selenium自动化测试实战

    @序章 自动化测试是软件测试的主流方向之一: 教程从测试的根本需求出发,讲解如何开展自动化测试. 首先,我们要明白,自动化仅仅是满足我们某种需求的一种工具:没有必要花费时间把它全部弄懂:我们只需要学会 ...