获取URL参数并转换为对象的两种方法

前端获取URL参数并转换为对象的两种方法

本文介绍两种将URL查询参数(location.search)转换为JavaScript对象的常用方法,通过示例代码演示实现过程,并对比分析它们的优缺点。


示例URL

以以下URL为例:
http://localhost:8080/?name=John&age=30&token=abc123&query=a%20b

目标:获取查询参数并转换为对象

预期结果:

javascript 复制代码
{
  name: "John",
  age: "30",
  token: "abc123",
  query: "a b" // 注意URL解码后的空格
}

方法一:传统字符串处理

实现代码

javascript 复制代码
// 方法一:字符串分割方案
const search = window.location.search; // 获取"?name=John&age=30..."
const delInitial = search.substring(1); // 去除问号 → "name=John&age=30..."
const group = delInitial.split("&"); // 拆分为数组 → ["name=John", "age=30..."]

const targetObject = group.reduce((obj, item) => {
  const [key, value] = item.split("="); // 分割键值对
  obj[key] = decodeURIComponent(value); // URL解码处理
  return obj;
}, {});

console.log(targetObject.token); // 输出:abc123

流程解析

  1. 获取原始参数
    window.location.search → "?name=John&age=30&token=abc123&query=a%20b"

  2. 去除问号
    substring(1) → "name=John&age=30&token=abc123&query=a%20b"

  3. 拆分键值对
    split("&") → ["name=John", "age=30", "token=abc123", "query=a%20b"]

  4. 构建对象

    通过reduce遍历数组,将每个键值对存入对象


方法二:现代API方案

实现代码

javascript 复制代码
// 方法二:现代API方案
const urlSearchParams = new URLSearchParams(window.location.search);
const params = Object.fromEntries(urlSearchParams.entries());

console.log("🚀 params.token:", params.token); // 输出:abc123
console.log(params.query); // 自动解码 → "a b"

流程解析

  1. 创建URLSearchParams实例

    自动解析查询字符串:new URLSearchParams('?name=John...')

  2. 转换为普通对象
    Object.fromEntries(urlSearchParams.entries()) → 键值对对象

备注:

两种方法 仅适用于简单的获取参数

以及参数不重复的情况下

实际开发中复杂获取可通过router或不使用url传参数

使用接口获取

知识不用记太多 有印象 忘记以后再来查就好

相关推荐
我命由我123453 分钟前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
key_3_feng18 分钟前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
LaughingZhu1 小时前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion
Lank_M1 小时前
抠图结果缩放后边缘发脏,该怪的不是插值
前端
jerrywus1 小时前
Skill、MCP、Workflow、Rules、Memory 有什么区别?拿几次真实开发任务讲清楚
前端·agent·claude
补码缩写1 小时前
canvas 与 sharp 缩放透明图:默认预乘,非预乘得拆通道
前端
静默回滚1 小时前
抠图 PNG 缩小再放大,边缘又糊又白是两件事
前端
用户11977079480731 小时前
GitHub 电商开源项目分享:用 sharp 批量出饰品主图,试了裁剪、细节图和色彩配置文件三个坑
前端·node.js
deli0071 小时前
地图定位为什么偏了 500 米?GPS 与火星坐标实测
前端
TK泰妞2 小时前
节日促销前,TikTok 商品视频应该提前准备什么?
前端·人工智能·节日