プロジェクト内でクエリ文字列が js 配列分割メソッドによってフォーマットされているのを見て、なぜ正規表現を使用できないのか疑問に思いました。パフォーマンスはどうですか?したがって、次のコードがあります:
var url ='www .baidu.com?a=123&b=456&c=789&e=dfsdfsdfsdfsdfsdfsdf&f=46545454545454785&g=e23232dsfvdfvdf';
/**
* フォーマットされたクエリ文字列 (通常の実装)
* @param url URL アドレス
* @return {Object} フォーマットされた json オブジェクト
*/
関数 formatUrl(url){
var reg= / (?: [?&] )([^&] )=([^&] )/g;
var data={};
関数 fn(str,pro,value){
データ[decodeURIComponent(pro)]=decodeURIComponent(value);
}
url.replace(reg,fn);
}
/**
* フォーマットされたクエリ文字列 (配列実装)
* @param url URL アドレス
* @return {Object} フォーマットされた json オブジェクト
*/
関数 formatUrl2(url){
url=url.replace(/.*?/,'');
var args={},
items=url.length?url.split(" &") :[]
,item=null
,i=0
,len=items.length;
for(i=0;iitem= items[i].split("=");
args[decodeURIComponent(item[0])]=decodeURIComponent(item[1]);
戻り値
}
var startTime=new Date();
for(var i=0;iformatUrl2(url);
}
console.log('formatUrl2 ',( new Date()-startTime)); //formatUrl2 12138
startTime=new Date();
for(var i=0;iformatUrl(url) ;
}
console.log('formatUrl',(new Date()-startTime)); //formatUrl 12537
テスト ブラウザは標準実装関数です。実際には配列よりも優れています。実装された関数はもっと遅いはずです(涙...)。しかし幸いなことに、100万回繰り返しても0.4秒遅くなるだけです。