作家
登录

通过正则格式化url查询字符串实现代码

作者: 来源:www.28hudong.com 2013-03-30 00:15:30 阅读 我要评论

看到项目里通过js数组split方法格式化查询字符串的,突发奇想为什么不能用正则呢,性能如何?于是便有了如下代码: 复制代码 代码如下: var url='www.baidu.com?a=123&b=456&c=789&e=dfsdfsdfsdfsdfsdfsdf&f=46545454545454785&g=e23232dsfvdfvdf'; /** * 格式化查询字符串(正则实现) * @param url url地址 * @return {Object} 格式化的json对象 */ function formatUrl(url){ var reg=/(?:[?&]+)([^&]+)=([^&]+)/g; var data={}; function fn(str,pro,value){ data[decodeURIComponent(pro)]=decodeURIComponent(value); } url.replace(reg,fn); return data; } /** * 格式化查询字符串(数组实现) * @param url url地址 * @return {Object} 格式化的json对象 */ function formatUrl2(url){ url=url.replace(/.*?/,''); var args={}, items=url.length?url.split("&"):[] ,item=null ,i=0 ,len=items.length; for(i=0;i<items.length;i++){ item=items[i].split("="); args[decodeURIComponent(item[0])]=decodeURIComponent(item[1]); } return args; } var startTime=new Date(); for(var i=0;i<1000000;i++){ formatUrl2(url); } console.log('formatUrl2',(new Date()-startTime)); //formatUrl2 12138 startTime=new Date(); for(var i=0;i<1000000;i++){ formatUrl(url); } console.log('formatUrl',(new Date()-startTime)); //formatUrl 12537 测试浏览器是chrme 25;正则实现的函数居然比数组实现的函数要慢(泪奔....)。不过还好,在重复执行一百万次的情况下只慢0.4秒

  推荐阅读

  window.open的页面如何刷新(父页面)上层页面

复制代码 代码如下: this.ClientScript.RegisterStartupScript(this.GetType(), this.Title, "window.opener.location.reload();alert('销帐成功!');", true); 主要是这段js代码:window.opener.location.reload(>>>详细阅读


本文标题:通过正则格式化url查询字符串实现代码

地址:http://www.17bianji.com/kaifa2/JS/22660.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)