手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >通过正则格式化url查询字符串实现代码
通过正则格式化url查询字符串实现代码
摘要:看到项目里通过js数组split方法格式化查询字符串的,突发奇想为什么不能用正则呢,性能如何?于是便有了如下代码:复制代码代码如下:varu...

看到项目里通过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秒

【通过正则格式化url查询字符串实现代码】相关文章:

网页里控制图片大小的相关代码

将HTML自动转为JS代码

js实现异步循环实现代码

Jquery解析json字符串及json数组的方法

JS对字符串编码的几种方式使用

AngularJS学习笔记之基本指令

Javascript 字符串模板的简单实现

一些有关检查数据的JS代码

网页里控制图片大小的相关代码

js获取字符串字节数方法小结

精品推荐
分类导航