ghostWuUrlParser.js的作用是分析一段url中的查詢參數,即: '?'號後面的 鍵值對參數. ghostWuUrlParser.js 使用說明: ghostWuUrlParser( 'https://www.baidu.com/s?wd=ghostwu&name=ghost&age= ...
ghostWuUrlParser.js的作用是分析一段url中的查詢參數,即: '?'號後面的 鍵值對參數.
ghostWuUrlParser.js 使用說明:
ghostWuUrlParser( 'https://www.baidu.com/s?wd=ghostwu&name=ghost&age=22&sex=man&name=zhangsan&name=lisi' ) 解釋出來的結果是: {wd: "ghostwu", name: Array(3), age: "22", sex: "man"} Array(3) = [ 'ghost', 'zhangsan', 'lisi' ] ghostWuUrlParser( 'https://www.baidu.com/s?wd=ghostwu&name=ghost&age=22&sex=man&name=zhangsan' ) 解釋出來的結果是: {wd: "ghostwu", name: Array(2), age: "22", sex: "man"} ghostWuUrlParser( 'https://www.baidu.com/s?wd=ghostwu&name=ghost&age=22&sex=man' ) 解釋出來的結果是: {wd: "ghostwu", name: "ghost", age: "22", sex: "man"} ghostWuUrlParser( 'https://www.baidu.com/s?wd=ghostwu&name=ghost&age=22&sex=man', 'wd' ) 解釋出來的結果是: ghostwu 只要對字元串處理函數比較熟練,基本很容易看懂 源代碼與註解:1 ;(function( window, undefined ){ 2 var ghostWuUrlParser = function( url, key ){ 3 var res = {}; 4 if( typeof url === 'undefined' ) { 5 throw new Error( '請輸入有效的url' ); 6 } 7 8 //p:查詢 '?'號是否存在 9 var _url = url, p = _url.search( /\?/ ); 10 //_url: 根據p的查詢結果 把問號後面的內容賦值給_url 11 ( p != -1 ) && ( _url = _url.slice( p + 1 ) ); 12 var q = _url.split( '&' ); 13 for( var i = 0, len = q.length; i < len; i++ ){ 14 var str = q[i], 15 pos = str.search( '=' ), 16 //k: 參數的鍵 17 k = str.substring( 0, pos != -1 ? pos : str ), 18 //v: 參數的值 19 v = str.substring( pos != -1 ? ( pos + 1 ) : str ); 20 v && ( v = decodeURIComponent( v ) ); 21 if( res.hasOwnProperty( k ) ){ 22 //如果出現同名的key, 且不是數組,就把當前的值 跟之前的值 合併到一個數組 23 if( !( res[k] instanceof Array ) ){ 24 res[k] = [ res[k], v ]; 25 }else { 26 //第三次同名的key 就執行這段 27 res[k].push( v ); 28 } 29 }else { 30 //第一次不存在的時候,直接存 31 k && (res[k] = v); 32 } 33 } 34 //傳遞了key 就提取對應的key, 否則返回完整結果 35 return key ? res[key] : res; 36 } 37 //暴露介面 38 window.ghostWuUrlParser = ghostWuUrlParser; 39 })( window, undefined );