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. Vue于React特性对比(三)

    最近重学React,再次和vue做了对比. 一,为官方插件提供便利的第三方插件横行 React仅仅是一个ui框架.虽然官方提供了redux,react-router:但也有第三方的redux-thun ...

  2. linux下如何设置日志级别?

    答: echo $level > /proc/sys/kernel/printk 如: echo 8 4 1 7 > /proc/sys/kernel/printk

  3. Canvas-基本用法

    Canvas教程-MDN HTML 5 Canvas 参考手册 <canvas>是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素.例如,它可以用于绘制图表.制作 ...

  4. java中 label 配合 break continue 使用方法

    转 https://www.jianshu.com/p/7954b61bc6ee java中 label 配合 break continue 使用的其实是比较少的. 这种做法在业务代码中比较少见. 在 ...

  5. python函数,定义,参数,返回值

    python中可以将某些具备一定功能的代码写成一个函数,通过函数可以在一定程度上减少代码的冗余,节约书写代码的时间.因为有一些代码实现的功能我们可能会在很多地方用到. 1.函数的声明与定义 通过def ...

  6. 【AMAD】django-channels -- 为Django带来异步开发

    动机 简介 个人评分 动机 目前web生态的发展带来了很多异步特性,比如websocket.而原生Django并不支持. 简介 django-channels1为Django带来了Websocket, ...

  7. Awvs–网络漏洞扫描工具

    Awvs漏洞扫描自动化 在WEB安全方面,安全侧使用Acunetix_Web_Vulnerability_Scanner_11.xWEB漏洞扫描工具定期手工对m站和www站进行全站漏洞扫描. 为了防止 ...

  8. PHP新特性

    1.太空船操作符<=> 2.变量类型限定 3.$a = $b??$c 4.常量数组,define($arr,['a','b']) 5.namespace批量导入 等等

  9. [转帖]龙芯:Docker 配置与实践清单

    Docker 配置与实践清单 http://www.sohu.com/a/254904706_198222 文章对来官方文档及 Docker Links[1] 中链接内容进行归档整理,包含了日常工作中 ...

  10. 开发者福利!请及时领取您的SpreadJS临时部署授权码

    SpreadJS 于2015年发布,至今已有4年历史,作为一款基于 HTML5 的纯前端电子表格控件,在短短四年间,即在财税.金融.计算机软件与服务.工业制造.大数据应用.电力能源.交通.物流运输.医 ...