對(duì)前端同學(xué)來(lái)說(shuō),經(jīng)常要碰到一種比較麻煩的情況,那就是url查詢(xún)字符串的解析問(wèn)題。說(shuō)起來(lái)也不難,就是比較麻煩。
具體來(lái)處理這種情況的時(shí)候,相信有一部分同學(xué)就是針對(duì)具體項(xiàng)目中的需要的字符去正則匹配一下,業(yè)務(wù)需求嘛,解決就算了。原來(lái)我也是這樣干的。不過(guò)最好還是抽一種方法出來(lái),畢竟這種工具類(lèi)的發(fā)放很多地方都會(huì)用到。當(dāng)然現(xiàn)在github上有很多大牛的作品可以借鑒。今天自己也來(lái)實(shí)現(xiàn)一下。
總體思路很簡(jiǎn)單,就是正則去匹配看是否有查詢(xún)字符串的出現(xiàn),不過(guò)為了功能豐富點(diǎn)也就是隨手加上了支持自定義字符串的解析(有點(diǎn)雞肋),可選返回的是數(shù)組或者對(duì)象。具體處理可以見(jiàn)代碼:
/** * @method queryString * @param getObj 結(jié)果為對(duì)象否則為數(shù)組 * @default false * @param str 需要解析的string * @default location.search * @return Object or Array * */function queryString(getObj,str){ var string = (str!== undefined) ? str : window.location.search; var result = string.match(new RegExp("[^\?\&]+=[^\?\&]+","g")); if(result == null){ result = ''; }else if(getObj){ var params = {}; for(var i = 0; i < result.length; i++){ var res = result[i].split('='); var key = res[0],