将网址转化为map或对象,方便取值

1. URL

复制代码
function getQuerySearchParams(key) {
    var urlObj = new URL(location.href);
    return urlObj.searchParams.get(key);
}

2. URLSearchParams

复制代码
function getQuerySearchParams(key) {
    var urlObj = new URL(location.href);
    console.log(urlObj.searchParams instanceof URLSearchParams) // true
    return urlObj.searchParams.get(key);
}

3. reduce

复制代码
const URL_SEARCH ='?source=baidupc_utmId_5100&plan=A005-qglrgmc&unit=a010-mp4&keyword=mp4zgif&keywordid=20210343653&bd_vid=7019318071742353099'
var urlObj = URL_SEARCH.slice(1) // 去掉第一个?号字符
.split('&')
.filter(Boolean)
.reduce((cur, val)=> {
    const idx = val.indexOf('=') // 获取第一个=号所在的下标
    cur[(val.substring(0, idx))] = encodeURIComponent(val.substring(idx+1));

    return cur;
}, {})
const getQuerySearchParams = (key) => urlObj[key]
console.log(getQuerySearchParams('unit'))

4. 正则

注意\w没有包含所有的字符, 发现比较特殊的添加一下并仔细验证一下!!!

复制代码
var url ='?source=baidupc_utmId_5100&plan=A005-qglrgmc&unit=a010-mp4&keyword=mp4zgif&keywordid=20210343653&bd_vid=7019318071742353099'
function getQuerySearchParams(key) {
    var obj = {};
    url.replace(/\??([\w-]+)=([\w-]+)&?/g, function(_, matchKey, matchValue) {
       if (!obj[matchKey]) {
        obj[matchKey] = matchValue;
       } else {
           var temp = obj[matchKey];
           obj[matchKey] = [].concat(temp, matchValue);
       }
    });
    if (!key) {
        return obj;
    } else {
        for (let ele in obj) {
            if (ele = key) {
                return obj[ele];
            }
        }
        return '';
    }
}
console.log(getQuerySearchParams('unit'))
相关推荐
镜宇秋霖丶4 小时前
2026.5.6@霖宇博客制作中遇见的问题
前端·javascript·vue.js
吴声子夜歌5 小时前
Vue3——TypeScript基础
javascript·typescript
小李子呢02115 小时前
前端八股Vue---Vue-router路由管理器
前端·javascript·vue.js
百锦再6 小时前
Auto.js变成基础知识学习
开发语言·javascript·学习·sqlite·kotlin·android studio·数据库开发
洛_尘7 小时前
Python 5:使用库
java·前端·python
Bigger7 小时前
Bun 能上生产吗?我的实战结论
前端·node.js·bun
kyriewen8 小时前
你的前端滤镜慢得像PPT?用Rust+WebAssembly,一秒处理4K图
前端·rust·webassembly
kyriewen119 小时前
你等的Babel编译,够喝三杯咖啡了——用Rust重写的SWC,只需眨个眼
开发语言·前端·javascript·后端·性能优化·rust·前端框架
IT_陈寒9 小时前
SpringBoot自动配置坑了我,原来要这样绕过去
前端·人工智能·后端
东方小月9 小时前
Claude Code 完整上手指南:MCP、Skills、第三方模型配置一次搞定
前端·人工智能·后端