SOURCE

function appendQueryParams(url, params) {
    // 将对象转换为URL编码的查询字符串
    function objectToQueryString(obj) {
        return Object.keys(obj)
            .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]))
            .join('&');
    }

    // 解析URL,以便我们可以修改查询部分
    const urlObj = new URL(url);

    // 获取现有的查询字符串
    let queryString = urlObj.search || '';

    // 如果现有的查询字符串不为空,添加一个&来连接新的参数
    if (queryString) {
        queryString += '&';
    }

    // 将对象转换为查询字符串并附加到URL上
    queryString += objectToQueryString(params);

    // 设置新的查询字符串
    urlObj.search = queryString;

    // 返回新的URL
    return urlObj.toString();
}

// 示例用法
const url = 'https://example.com/page';
const params = {
    param1: 'value1',
    param2: 'value2',
    param3: 'value3 with spaces'
};

const newUrl = appendQueryParams(url, params);
console.log(newUrl); // 输出: https://example.com/page?param1=value1&param2=value2&param3=value3%20with%20spaces
console 命令行工具 X clear

                    
>
console