面試題目
這是搜狐JavaScript面試題,要求如下:
實現一個URI解析方法,把url里#之后的參數解析成指定的數據結構。
function urlParser(s){ //+++++++++++答題區域+++++++++++ //+++++++++++答題結束+++++++++++ } try{ var url1 = "http://www.abc.com/m/s/#page/2/?type=latest_videos&page_size=20"; var url2 = "http://www.abc.com/m/s/#type=latest_videos&page_size=20"; var url3 = "http://www.abc.com/m/s/#page?type=latest_videos&page_size=20"; console.group(); console.info( urlParser(url1) ); console.info( urlParser(url2) ); console.info( urlParser(url3) ); console.groupEnd(); /*------[執行結果]------ ["page", "2", { "type": "latest_videos", "page_size": 20 }] [{ "type": "latest_videos", "page_size": 20 }] ["page", { "type": "latest_videos", "page_size": 20 }] ------------------*/ }catch(e){ console.error("執行出錯,錯誤信息: " + e); }
分析過程
這一題考的是基礎,沒什么好分析的,直接上代碼吧。
function urlParser(s){ //+++++++++++答題區域+++++++++++ var mArr=[]; var pArr=[]; var m=s.split("#")[1],p=""; if(m.indexOf("?")>-1){ var temp=m.split("?")[0]; p=m.split("?")[1]; mArr=temp.split("/"); if(mArr[mArr.length-1] === ""){ mArr.pop(); } } else{ p=m; } pArr=p.split("&"); var str="["; for(var i=0,l=mArr.length;i<l;i++){ str+="\""+mArr[i]+"\","; } str+="{"; for(var i=0,l=pArr.length;i<l;i++){ str+="\""+pArr[i].split("=").join("\":\"")+"\","; } str+="}]"; return str.replace(",}]","}]"); //+++++++++++答題結束+++++++++++ }
小結
這一題考查的是JavaScript基礎知識,如字符串的分割連接等等,算是比較簡單的一題了。當然,簡單的題也能寫出高質量的代碼,期待高手分享。