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. ? 这是个很好的问题。Go 当前的 GC 显然做了一些额外的工作,但它也跟其他的工作并行执行,所以在具有备用 CPU 的系统上,Go 正在作出合理的选择。请看 https://golang.org/issue/17969 结束语(Closing notes) 通过研究 Go 垃圾收集器,我能够理解 Go GC 当前结构的背景以及它如何克服它的弱点。Go发展得非常快。如果你对 Go感兴趣,最好继

    ? 这是个很好的问题.Go 当前的 GC 显然做了一些额外的工作,但它也跟其他的工作并行执行,所以在具有备用 CPU 的系统上,Go 正在作出合理的选择.请看 https://golang.org/i ...

  2. python爬虫简单实现,并在java中调用python脚本,将数据保存在json文件中

    # coding:utf-8 import urllib2 from bs4 import BeautifulSoup import json import sys reload(sys) sys.s ...

  3. Python xlwt 模块执行出错Exception: String longer than 32767 characters

    使用Python搜集数据时用到xlwt保存到excel文件,但是数据量有点大时出现 Exception: String longer than 32767 characters 搜索类似的问题都是建议 ...

  4. 高级java面试宝典

    1.spring事物的配置 spring事物分为俩种,一种是注解事物,一种是AOP事物注解事物的配置: 事物的隔离级别,事物的传播性,事物的超时回滚,哪些异常回滚,哪些不回滚,有默认的回滚规则注解事物 ...

  5. subprocess以及常用的封装函数

    从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn.os.popen.popen2..commands. ...

  6. Spring Boot中报错org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found. Available parameters are [0, 1, param1, param2]的解决办法

    我这里的报错信息显示: org.apache.ibatis.binding.BindingException: Parameter 'reqUsername' not found. Available ...

  7. onethink多图上传

    模板处理, 可以参考 checkbox 的. 注:edit 方法的 基本一样,需要先把已有的数据展示出来,绑定双击事件,删除图片 需要先绑定给已经展示出来的图片, uploadPicture 的cal ...

  8. 数据集成、变换、归约及相关MATLAB工具箱函数

    数据预处理的主要内容包括数据清洗.数据集成.数据变换和数据规约,在数据挖掘的过程中,数据预处理工作量占到了整个过程的60%.数据清洗在上一篇博客中写过,这里主要写后面三部分. 数据集成 数据挖掘需要的 ...

  9. 【VS开发】fopen 文本文件与二进制文件区别

    在学习C语言文件操作后,我们都会知道打开文件的函数是fopen,也知道它的第二个参数是 标志字符串.其中,如果字符串中出现'b',则表明是以打开二进制(binary)文件,否则是打开文本文件. 那么什 ...

  10. Sping POJO中如何添加验证规则和验证消息提示

    1.示例,验证规则和错误提示作为注解写在声明变量的地方 @NotNull private long id; @NotNull @Size(min = 2, max = 30,message=" ...