使用js写一个方法获取url上的所有参数

你可以使用JavaScript编写一个函数来获取URL上的所有参数。以下是一个简单的示例:

function getURLParams() {
    const urlParams = {};
    const queryString = window.location.search;
    const urlParamsStrings = queryString.split('?')[1].split('&');

    urlParamsStrings.forEach(paramString => {
        if (paramString) {
            const [key, value] = paramString.split('=');
            urlParams[key] = decodeURIComponent(value);
        }
    });

    return urlParams;
}

// 使用示例
const params = getURLParams();
console.log(params);

但是,这个函数假设查询字符串始终存在并且以?开头。为了使其更健壮,你可以修改函数以处理各种情况,例如没有查询字符串或查询字符串格式不正确的情况。以下是一个更健壮的版本:

function getURLParams() {
    const urlParams = {};
    const queryString = window.location.search;
    
    // 如果没有查询字符串,则直接返回空对象
    if (!queryString) {
        return urlParams;
    }

    // 移除查询字符串开头的'?',并通过'&'分割成多个参数对
    const urlParamsStrings = queryString.substring(1).split('&');

    urlParamsStrings.forEach(paramString => {
        if (paramString) {
            const [key, value] = paramString.split('=');
            // 对参数值进行URL解码
            urlParams[key] = decodeURIComponent(value || '');
        }
    });

    return urlParams;
}

// 使用示例
const params = getURLParams();
console.log(params);

这个更健壮的版本首先检查查询字符串是否存在,如果不存在,则直接返回一个空对象。然后,它使用substring(1)来移除查询字符串开头的?,接着通过&字符将查询字符串分割成多个参数对。最后,它遍历这些参数对,将它们存储在一个对象中,并返回该对象。注意,这里还对参数值进行了URL解码,以确保正确处理特殊字符。

posted @   王铁柱6  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示