解析 URL Params 为对象

发布于 2023-05-03 20:55:43 字数 934 浏览 44 评论 0

支持对象和数组

function parseParams(url) {
  let params = {};
  let queryString = url.split("?")[1];
  if (queryString) {
    queryString = queryString.split("#")[0];
    let pairs = queryString.split("&");
    for (let i = 0; i < pairs.length; i++) {
      let [key, value] = pairs[i].split("=");
      key = decodeURIComponent(key);
      value = decodeURIComponent(value);

      let keys = key.split("[");
      let obj = params;

      for (let j = 0; j < keys.length; j++) {
        let k = keys[j].replace("]", "");
        if (j === keys.length - 1) {
          if (obj[k]) {
            if (!Array.isArray(obj[k])) {
              obj[k] = [obj[k]];
            }
            obj[k].push(value);
          } else {
            obj[k] = value;
          }
        } else {
          if (!obj[k]) {
            obj[k] = {};
          }
          obj = obj[k];
        }
      }
    }
  }
  return params;
}

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

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

发布评论

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

关于作者

空宴

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

wanghao

文章 0 评论 0

蓝天

文章 0 评论 0

handsomedeng

文章 0 评论 0

仙女

文章 0 评论 0

石海龙

文章 0 评论 0

dianjvnan

文章 0 评论 0

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