将url的查询参数解析成字典对象

search.replace()的第二个函数参数的参数,它们在通用的情况下各自代表什么意思没看懂

function getQueryObject(url) {
    url = url == null ? window.location.href : url;
    var search = url.substring(url.lastIndexOf("?") + 1);
    var obj = {};
    var reg = /([^?&=]+)=([^?&=]*)/g;
    search.replace(reg, function (rs, $1, $2) {
        var name = decodeURIComponent($1);
        var val = decodeURIComponent($2);                
        val = String(val);
        obj[name] = val;
        return rs;
    });
    return obj;
}
阅读 4.7k
2 个回答

参考MDN

rs是匹配的子串,$1和$2代表匹配的第n个分组,这里也就是([^?&=]+)(即query的name)和([^?&=]*)(即query的value),遍历同时将value赋值到obj对应的name属性上。

为每项匹配的数据设置回调处理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题