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¶m2=value2¶m3=value3%20with%20spaces
console