You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.6 KiB
JavaScript
82 lines
1.6 KiB
JavaScript
// #ifndef H5
|
|
class URLSearchParams {
|
|
constructor(queryString) {
|
|
this.params = new Map();
|
|
if (queryString) {
|
|
queryString.split('&').forEach(pair => {
|
|
const [key, value] = pair.split('=');
|
|
this.params.set(decodeURIComponent(key), decodeURIComponent(value));
|
|
});
|
|
}
|
|
}
|
|
|
|
append(key, value) {
|
|
this.params.set(key, value);
|
|
}
|
|
|
|
delete(key) {
|
|
this.params.delete(key);
|
|
}
|
|
|
|
get(key) {
|
|
const values = [...this.params.values()];
|
|
return values.length ? values[0] : null;
|
|
}
|
|
|
|
getAll(key) {
|
|
return this.params.get(key) || [];
|
|
}
|
|
|
|
has(key) {
|
|
return this.params.has(key);
|
|
}
|
|
|
|
set(key, value) {
|
|
this.params.set(key, value);
|
|
}
|
|
|
|
sort() {
|
|
// 按键排序
|
|
const sortedEntries = [...this.params.entries()].sort((a, b) => a[0].localeCompare(b[0]));
|
|
this.params = new Map(sortedEntries);
|
|
}
|
|
|
|
forEach(callbackFn, thisArg) {
|
|
this.params.forEach(callbackFn, thisArg);
|
|
}
|
|
|
|
toString() {
|
|
return [...this.params.entries()].map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&');
|
|
}
|
|
}
|
|
|
|
// #endif
|
|
|
|
// #ifdef H5
|
|
const URLSearchParams = window.URLSearchParams;
|
|
// #endif
|
|
|
|
function params(param) {
|
|
if (param == null || param == "") {
|
|
return new URLSearchParams();
|
|
}
|
|
if (param.constructor == Array) {
|
|
let param1 = new URLSearchParams();
|
|
for (let obj of param) {
|
|
param1.append(obj.name, obj.value);
|
|
}
|
|
param = param1;
|
|
} else {
|
|
let param1 = new URLSearchParams();
|
|
for (let name in param) {
|
|
param1.append(name, param[name]);
|
|
}
|
|
param = param1;
|
|
}
|
|
|
|
return param;
|
|
}
|
|
|
|
export {
|
|
params, URLSearchParams
|
|
} |