js 截取URL 携带的参数

本文介绍了一种使用JavaScript从URL中解析查询参数的方法,通过正则表达式匹配和解码URIComponent函数,将查询字符串转换为对象,便于后续的数据处理。
function getCode() {
    let url = window.location.search;
    let obj = {};
    let reg = /[?&][^?&]+=[^?&]+/g;
    let arr = url.match(reg);
    if (arr) {
        arr.forEach((item) => {
        let tempArr = item.substring(1).split('=');
        let key = decodeURIComponent(tempArr[0]);
        let val = decodeURIComponent(tempArr[1]);
        obj[key] = val;
        });
    }
    return obj.sid;
  }
  var sidObj = getCode();
function getCode() {
  let url = window.location.search;
  let obj = {};
  let reg = /[?&][^?&]+=[^?&]+/g;
  let arr = url.match(reg);
  if (arr) {
      arr.forEach((item) => {
        let tempArr = item.substring(1).split('=');
        let key = decodeURIComponent(tempArr[0]);
        let val = decodeURIComponent(tempArr[1]);
        obj[key] = val;
      });
  }
  return obj;
}
var obj = getCode();
console.log(obj)

 

### 提取并移除 URL 路由中的参数 在 JavaScript 中,可以通过 `URL` 对象来解析当前页面的 URL 并提取其中的所有查询参数。随后可以重新构建一个新的不含参数的路由字符串。 以下是实现这一功能的具体方法: #### 解析 URL 参数 通过创建一个 `URL` 对象实例化当前页面地址,并使用其内置属性访问路径和查询部分[^1]。 ```javascript function getUrlWithoutParams(urlString) { const url = new URL(urlString); // 获取原始路径 (不带查询参数) let newPath = url.pathname; // 如果有 hash (#),则将其附加到新路径上 if (url.hash) { newPath += url.hash; } return newPath; } // 测试函数 const testUrl = "https://example.com/path?name=JohnDoe&age=30#section"; console.log(getUrlWithoutParams(testUrl)); // 输出 "/path#section" ``` 上述代码片段展示了如何从给定 URL 字符串中删除所有查询参数,仅保留基础路径以及可能存在的哈希值[^2]。 #### 提取所有的查询参数 为了获取完整的查询参数列表,可进一步操作 `searchParams` 属性: ```javascript function extractAllParameters(urlString) { const url = new URL(urlString); // 创建 Map 存储键值对形式的参数 const paramsMap = new Map(); url.searchParams.forEach((value, key) => { paramsMap.set(key, value); }); return [...paramsMap.entries()]; // 返回数组表示的形式 [[key,value],...] } ``` 调用此函数将会返回一个二维数组,每一项代表一个单独的查询参数及其对应的值[^3]。 #### 综合应用 结合以上两个功能模块,我们可以轻松完成既定目标——即分离出纯净版的目标链接同它所携带的数据集合。 ```javascript function processRouteAndExtractParams(route){ const cleanPath=getUrlWithoutParams(route); const queryParams=extractAllParameters(route); console.log(`Clean Path:${cleanPath}`); console.table(queryParams); } processRouteAndExtractParams('http://localhost:8080/test?a=b&c=d'); /* 控制台输出: Clean Path:/test ┌─────────┬──────┐ │ (index) │ Values│ ├─────────┼──────┤ │ a │ 'b' │ │ c │ 'd' │ └─────────┴──────┘ */ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值