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

 更新时间:2012年12月28日 18:15:32   作者:  
看到项目里通过js数组split方法格式化查询字符串的,突发奇想为什么不能用正则呢,性能如何?感兴趣的朋友可以研究下哦
看到项目里通过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秒

相关文章

  • js鼠标移动时禁止选中文字

    js鼠标移动时禁止选中文字

    本文主要介绍了js鼠标移动时禁止选中文字的方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 如何在postman中添加cookie信息步骤解析

    如何在postman中添加cookie信息步骤解析

    这篇文章主要介绍了如何在postman中添加cookie信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • JavaScript检测实例属性, 原型属性

    JavaScript检测实例属性, 原型属性

    这篇文章主要介绍了JavaScript检测实例属性, 原型属性,需要的朋友可以参考下
    2015-02-02
  • JS 设置Cookie 有效期 检测cookie

    JS 设置Cookie 有效期 检测cookie

    这篇文章主要介绍了JS 设置Cookie 有效期 检测cookie的相关资料,需要的朋友可以参考下
    2017-06-06
  • 微信小程序实现简单的摇骰子游戏

    微信小程序实现简单的摇骰子游戏

    这篇文章主要为大家详细介绍了微信小程序实现简单的摇骰子游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • uni-app配置APP自定义顶部标题栏设置方法与注意事项

    uni-app配置APP自定义顶部标题栏设置方法与注意事项

    相信很多小伙伴在使用uniapp进行多端开发的时候,在面对一些业务需求的时候,uniapp给我们提供的默认导航栏已经不能满足我们的业务需求了,这篇文章主要给大家介绍了关于uni-app配置APP自定义顶部标题栏设置方法与注意事项的相关资料,需要的朋友可以参考下
    2022-07-07
  • 解决前端跨域问题方案汇总

    解决前端跨域问题方案汇总

    这篇文章主要介绍了解决前端跨域问题8种方案的相关资料,需要的朋友可以参考下
    2016-11-11
  • Js实现复选框的全选、全不选反选功能代码实例

    Js实现复选框的全选、全不选反选功能代码实例

    这篇文章主要介绍了Js实现复选框的全选、全不选和反选,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Iframe 自适应高度并实时监控高度变化的js代码

    Iframe 自适应高度并实时监控高度变化的js代码

    不得不用到iframe,且被强烈要求不能让它出现滚动条!嵌入的页面肯定是高度不一的,页面中也不能出现大片空白,所以也不能写死高度!真是麻鬼烦啊!
    2009-10-10
  • JavaScript调试工具汇总

    JavaScript调试工具汇总

    这篇文章主要介绍了7款基于桌面和WEB的JavaScript调试工具,更有效地处理动态类型使应用程序更符合编码标准,不管你是新学习javascript的菜鸟还是业界大神,都非常的有用。
    2014-12-12

最新评论