使用execAll 實現getParam():直接拿到雜湊值

王東煜發表於2019-09-25
var str = 'http://www.zhufengpeixun.cn/?lx=1&from=wx&b=12&c=13';
function getParam(url){
    var reg = /([^?=&]+)=([^?=&#])/g;//以=分割獲取索要的字元
    let obj = {};
    reg.execAll(url).forEach(item =>{//execAll分割成:大正則內容 小分組1 小分組2:["lx=1", "lx", "1",
        obj[item[1]] = item[2];//不需要再分割,直接使用索引1和索引2獲取就可以了
    })
    let v = url.match(/#(.+)/)?url.match(/#(.+)/)[1] : null;
    obj.hash = v;
    return obj
}
console.log(getParam(str));////{lx: "1", from: "wx", b: "12", c: "13"}
複製程式碼
//第二種 使用replace方法實現getParam();
var str = 'http://www.zhufengpeixun.cn/?lx=1&from=wx&b=12&c=13';
 function getParam(url){
     var reg = /([^?=&]+)=([^?=&#]+)/g; //以=號分割,獲取想要的字元
     let obj = {};
     var res = str.replace(reg,function($0,$1,$2){
         //$0代表大正則內容 $1代表第一個分組 $2代表第二個分組
         obj[$1] = $2;
     })
     let v = url.match(/#(.+)/) ? url.match(/#(.+)/)[1] : null;
            obj.hash = v;
            return obj;
 }
console.log(getParam(str));//{lx: "1", from: "wx", b: "12", c: "13"}
複製程式碼
//第三種方法match 實現 getParam()
var str = 'http://www.zhufengpeixun.cn/?lx=1&from=wx&b=12&c=13';
function getParam(url){
    var reg =/([^?=&]+)=([^?=&#]+)/g
    var obj = {};
    url.match(reg).forEach(item =>{
        let a = item.split('=')//需要再以=切割一下變成:["lx", "1"]
        obj[a[0]] = a[1]
    })
    let v = url.match(/#(.+)/)?url.match(/#(.+)/)[1] : null;
    obj.hash =obj;
    return obj;
}
 console.log(getParam(str));//{lx: "1", from: "wx", b: "12", c: "13"}
複製程式碼

相關文章