一行代码实现查询参数 queryString 解析
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 技术交流群。
上一篇: 浅谈模块化加载的实现原理
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论