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

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

时间: 2024-09-19 00:46:20

通过正则格式化url查询字符串实现代码_javascript技巧的相关文章

js冒泡法和数组转换成字符串示例代码_javascript技巧

js代码: 复制代码 代码如下: window.onload = function(){ var mian = document.getElementById( "mian" ); var mian1 = document.getElementById( "mian1" ); var str = mian.innerHTML; var arry = []; var len = str.length; for( var i = 0; i < len; i++ )

javascript使用正则获取url上的某个参数_javascript技巧

function GetUrlMenuCode() { var url = window.location.href; var parameter = url.substring(url.indexOf('?') + 1); parameter = parameter.split('&'); var reg = /MenuCode=/g; var menuCode = ""; for (var i = 0; i < parameter.length; i++) { reg

JavaScript获得url查询参数的方法_javascript技巧

本文实例讲述了JavaScript获得url查询参数的方法.分享给大家供大家参考.具体实现方法如下: function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="

在JS中解析HTML字符串示例代码_javascript技巧

在js中直接添加html语句,js会将html字符串解析成相应的HTML语句,并在前端进行显示. 复制代码 代码如下: <span style="font-size:14px;">var el = document.createElement( 'div' ); el.innerHTML = "<html><head><title>titleTest</title></head><body>&

使用JavaScript修改浏览器URL地址栏的实现代码_javascript技巧

现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来,当你在浏览器点击后退按钮的时候,你可以冲浏览历史上获得回退的信息,这听起来并不复杂,是可以实现的,我们来编写些代码.来看看它是如何工作的. 复制代码 代码如下: var stateObject = {};var title = "Wow Title";var newUrl = "/my/awesome/url";history.pushState

父节点获取子节点的字符串示例代码_javascript技巧

1.JavaScript方法:document.getElementById("id").innerHTML; (1)实例说明 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="h

JScript分割字符串示例代码_javascript技巧

不废话了,直接用代码说明吧: 复制代码 代码如下: try { var ss = new Array(); var str="123,4567,89,0"; ss = str.split(","); // 以逗号为分割符 for(i=0;i<ss.length;i++) WScript.Echo(ss[i]); } catch(e) { WScript.Echo(e.description); }

js substring从右边获取指定长度字符串(示例代码)_javascript技巧

如下所示: 复制代码 代码如下:  /*    Get the rightmost substring, of the specified length,    from a String object. */  String.prototype.right = function (length_)  {          var _from = this.length - length_;          if (_from < 0) _from = 0;          return t

判断日期是否能跨月查询的js代码_javascript技巧

function checkDate(startDate, endDate, num, flag) { if(startDate == null || endDate == null) { popwin.info('提示','日期不可为空'); return false; } if(startDate == '' || endDate == '') { popwin.info('提示','请输入查询日期'); return false; } var start_date = startDate