方法解析
- 使用encodeURIComponent進行編碼,比如中文
- 考慮到對象是否還包含別的類型,如數組 對象
代碼
function encodeSearchParams(obj) {
const params = [];
Object.keys(obj).forEach((key) => {
let value = obj[key];
// 如果值為undefined置空
if (typeof value === 'undefined') {
value = '';
}
//使用encodeURIComponent進行編碼
if (Array.isArray(obj[key])) {//類型為數組的時候
value.forEach(item => {
params.push([key, encodeURIComponent(item)].join('='));
});
}
if (Object.prototype.toString.call(obj[key]) === '[object Object]') {//類型為對象的時候
Object.keys(obj[key]).forEach(item => {
params.push([key, encodeURIComponent(obj[key][item])].join('='));
})
}
else {
params.push([key, encodeURIComponent(value)].join('='));
}
});
return params.join('&');
}
let obj = {
'username': 'zhangsan',
arr: ['a', 'b', 'c'],
obj: { obj1: 'obj1', obj2: 'obj2' }
};
let str = `${baseUrl}?${encodeSearchParams(obj)}`; //方法使用
// baseUrl = 'www.good.com'
//www.good.com?username=zhangsan&arr=a&arr=b&arr=c&arr=a%2Cb%2Cc&obj=obj1&obj=obj2
具體思想如上 需根據實際應用