> 웹 프론트엔드 > JS 튜토리얼 > 일반 형식의 URL 쿼리 string_javascript 기술을 통해 코드 구현

일반 형식의 URL 쿼리 string_javascript 기술을 통해 코드 구현

WBOY
풀어 주다: 2016-05-16 17:44:56
원래의
1037명이 탐색했습니다.

프로젝트에서 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={}
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;iitem= 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입니다. 실제로 배열보다 낫습니다. 구현된 함수는 더 느려져야 합니다(눈물이...). 하지만 다행스럽게도 100만 번 반복하면 0.4초만 느려집니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿