// 假设你有一个对象
const paramsObject = {
name: 'feizhu',
from: 'a',
j: 'frontend',
extraInfo: {
a: 'b',
c: 'd',
},
};
// 将对象转换为URLSearchParams格式
function objectToSearchParams(obj) {
const searchParams = new URLSearchParams();
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const value = obj[key];
if (typeof value === 'object') { // 处理嵌套对象
for (const nestedKey in value) {
if (value.hasOwnProperty(nestedKey)) {
searchParams.append(`${key}.${nestedKey}`, value[nestedKey]);
}
}
} else {
searchParams.append(key, value);
}
}
}
return searchParams;
}
const searchParams = objectToSearchParams(paramsObject);
// 创建或获取URL,并添加查询参数
const urlBase = 'https://xxxxxxxxx.com';
const urlWithParams = new URL(urlBase);
urlWithParams.search = searchParams.toString();
console.log(urlWithParams.href); // 输出完整的URL
将会输出: https://xxxxxxxxx.com?name=feizhu&from=a&j=frontend&extraInfo.a=b&extraInfo.c=d
由于URLSearchParams
不会自动处理嵌套对象,所以这里进行了手动处理,将嵌套对象的键名用.
连接起来。对于更复杂的嵌套情况,可能需要递归处理
如何处理成:
const paramsObject = {
name: 'feizhu',
from: 'a',
j: 'frontend',
extraInfo: {
a: 'b',
c: 'd',
},
};
可以看这篇文章