init
This commit is contained in:
61
uni_modules/lime-shared/obj2url/index.ts
Normal file
61
uni_modules/lime-shared/obj2url/index.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
// @ts-nocheck
|
||||
// #ifndef UNI-APP-X
|
||||
type UTSJSONObject = Record<string, any>
|
||||
// #endif
|
||||
|
||||
/**
|
||||
* 将对象转换为URL查询字符串
|
||||
* @param data - 需要转换的键值对对象
|
||||
* @param isPrefix - 是否添加问号前缀,默认为false
|
||||
* @returns 格式化后的URL查询参数字符串
|
||||
*
|
||||
* @example
|
||||
* // 基础用法
|
||||
* obj2url({ name: '张三', age: 25 });
|
||||
* // => "name=%E5%BC%A0%E4%B8%89&age=25"
|
||||
*
|
||||
* @example
|
||||
* // 数组参数处理
|
||||
* obj2url({ tags: ['js', 'ts'] });
|
||||
* // => "tags[]=js&tags[]=ts"
|
||||
*
|
||||
* @example
|
||||
* // 包含空值的过滤
|
||||
* obj2url({ name: '', age: null, city: undefined });
|
||||
* // => ""
|
||||
*
|
||||
* @description
|
||||
* 1. 自动过滤空值(空字符串、null、undefined)
|
||||
* 2. 支持数组参数转换(自动添加[]后缀)
|
||||
* 3. 自动进行URI编码
|
||||
* 4. 支持自定义是否添加问号前缀
|
||||
*/
|
||||
export function obj2url(data : UTSJSONObject, isPrefix : boolean = false) : string {
|
||||
const prefix = isPrefix ? '?' : '';
|
||||
|
||||
const _result:string[] = [];
|
||||
const empty:(any|null)[] = ['', null]
|
||||
|
||||
// #ifndef APP-ANDROID
|
||||
empty.push(undefined)
|
||||
// #endif
|
||||
|
||||
for (const key in data) {
|
||||
const value = data[key];
|
||||
|
||||
// 去掉为空的参数
|
||||
if (empty.includes(value)) {
|
||||
continue;
|
||||
}
|
||||
if (Array.isArray(value)) {
|
||||
(value as any[]).forEach((_value) => {
|
||||
_result.push(
|
||||
encodeURIComponent(key) + '[]=' + encodeURIComponent(`${_value}`),
|
||||
);
|
||||
});
|
||||
} else {
|
||||
_result.push(encodeURIComponent(key) + '=' + encodeURIComponent(`${value}`));
|
||||
}
|
||||
}
|
||||
return _result.length > 0 ? prefix + _result.join('&') : '';
|
||||
}
|
Reference in New Issue
Block a user