usedjs
Version:
used.js 是一个轻量级小巧的可运行在浏览器中的 JavaScript 函数库
94 lines (93 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function parse(qs, sep, eq) {
var obj = Object.create(null);
if (typeof qs !== 'string' || qs.length === 0) {
return obj;
}
sep = sep || '&';
eq = eq || '=';
var params = qs.split(sep);
var i = 0;
var l = params.length;
var _loop_1 = function () {
var items = params[i].split(eq);
var queryKey = items[0].trim();
var queryVal = '';
if (items.length >= 3) {
items.splice(0, 1);
var lastIndex_1 = items.length - 1;
items.forEach(function (v, i) {
v = v.trim();
if (i === lastIndex_1) {
queryVal += v;
}
else {
queryVal += v + eq;
}
});
}
else {
queryVal = items[1].trim();
}
var cur = obj[queryKey];
if (cur) {
if (Array.isArray(cur)) {
cur.push(decodeURIComponent(queryVal));
}
else {
var temp = cur;
obj[queryKey] = new Array();
obj[queryKey].push(temp);
obj[queryKey].push(decodeURIComponent(queryVal));
}
}
else {
obj[queryKey] = decodeURIComponent(queryVal);
}
};
for (; i < l; i++) {
_loop_1();
}
return obj;
}
exports.parse = parse;
function stringify(obj, sep, eq) {
sep = sep || '&';
eq = eq || '=';
if (obj !== null && typeof obj === 'object') {
var keys = Object.keys(obj);
var len = keys.length;
var flast = len - 1;
var fields = '';
var i = 0;
for (; i < len; i++) {
var k = keys[i];
var v = obj[k];
var ks = k + eq;
if (Array.isArray(v)) {
var vlen = v.length;
var vlast = vlen - 1;
var j = 0;
for (; j < vlen; ++j) {
fields += ks + decodeURIComponent(v[j]);
if (j < vlast) {
fields += sep;
}
}
if (vlen && i < flast) {
fields += sep;
}
}
else {
fields += ks + decodeURIComponent(v);
if (i < flast) {
fields += sep;
}
}
}
return fields;
}
return '';
}
exports.stringify = stringify;