@pivoto/core
Version:

42 lines (38 loc) • 960 B
text/typescript
export function parseQuery(href: string = window.location.search): Record<string, string | string[]> {
const args = href.split('?');
if (args[0] === href) {
return {};
}
const obj: Record<string, string | string[]> = {};
const rs = args[1].split('#')[0].split('&');
for (let i = 0; i < rs.length; i++) {
let kv = rs[i].split('=');
if (obj[kv[0]] != null) {
if (Array.isArray(obj[kv[0]])) {
(obj[kv[0]] as string[]).push(kv[1])
} else {
obj[kv[0]] = [obj[kv[0]] as string, kv[1]]
}
} else {
obj[kv[0]] = kv[1];
}
}
return obj;
}
export function getQuery(name, href: string = window.location.search) {
return parseQuery(href)[name];
}
export function asQuery(obj) {
const rs = [];
for (const key in obj) {
const value = obj[key];
if (value.constructor === Array) {
value.forEach(function (_value) {
rs.push(key + '=' + _value);
})
} else {
rs.push(key + '=' + value);
}
}
return rs.join('&');
}