美文网首页
获取URL查询参数转换成对象

获取URL查询参数转换成对象

作者: Odeng | 来源:发表于2020-07-23 17:23 被阅读0次

获取URL查询参数并转换成对象

提取正则含义

多个非“[^?&=]+”字符后面接等于号“=”,后面分组为任意个非“?&=”字符,即"="号后的参数可以为空和任意非上述的特殊字符

//多个非“[^?&=]+”字符
/([^?&=]+)=([^?&=]*)/g

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>将URL查询参数转换成object</title>
    <style>
        body {
            background: rgba(30, 30, 30);
        }
    </style>
</head>
<body>
</body>
<script type="module">
    const quryToObj = (url) => {
        var params = url.split("?")[1].split("&")
        var obj = {}
        params.map(v => obj[v.split("=")[0]] = v.split("=")[1]);
        return obj;
    }
    const getQueryObject = (url) => {
        url = url == null ? window.location.href : url;
        var search = url.substring(url.lastIndexOf("?") + 1);
        var obj = {};
        var reg = /([^?&=]+)=([^?&=]*)/g;
        // var reg = /(.*)=(.*)/g;
        var str = 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;
    }

    console.log(quryToObj("http://www.test.net?id=123&a=1&bb=b"));
    console.log(getQueryObject("http://www.test.xxx.net?id=345&a=2&a=d"));
</script>
</html>

相关文章

网友评论

      本文标题:获取URL查询参数转换成对象

      本文链接:https://www.haomeiwen.com/subject/qdvhlktx.html