一行代码实现查询参数 queryString 解析

发布于 2021-11-12 12:46:53 字数 1842 浏览 1150 评论 0

queryString

queryString 指的是 url 上 ? 符号后面、# 符号前面的的字符串。一串示例的 querystring :

a=1&b=2&c=3&c=4

parse

方法1

var parse = function (querystring) {
    // 1. 按 & 符号分隔开
    var list = querystring.split('&');
    var ret = {};

    list.forEach(function (item) {
        // 2. 按 = 符号分隔开
        var slices = item.split('=');
        var key = slices[0];
        var val = slices[1];

        // 3. 如果是多值
        if (ret[key]) {
            ret[key] = Array.isArray(ret[key]) ? ret[key] : [ret[key]];
            ret[key].push(val);
        } else {
            ret[key] = val;
        }
    });

    return ret;
};

方法2

var parse = function (querystring) {
    var ret = {};
    var reg = /([^&]*)=([^&]*)/g;
    var matches;

    while ((matches = reg.exec(querystring))) {
        var key = matches[1];
        var val = matches[2];
		
        // 如果是多值
        if (ret[key]) {
            ret[key] = Array.isArray(ret[key]) ? ret[key] : [ret[key]];
            ret[key].push(val);
        } else {
            ret[key] = val;
        }
    }

    return ret;
};

即:

parse('a=1&b=2&c=3&c=4')
// => {"a":"1", "b":"2", "c":["3", "4"]}

注:文章代码仅为示例,如 decodeURIComponent、空值、+ 符号等情况未考虑在内。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

温柔少女心

暂无简介

0 文章
0 评论
668 人气
更多

推荐作者

书间行客

文章 0 评论 0

神妖

文章 0 评论 0

undefined

文章 0 评论 0

38169838

文章 0 评论 0

彡翼

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文