parse.js

import isString from 'lodash.isstring';
import isFunction from 'lodash.isfunction';
import { default as isArray } from './is-array';
/**
 * 解析 URL query string
 *
 * @param {string} qs 需要解析的 URL query string
 * @param {string} sep 用于界定键值对的子字符串。默认为 '&'
 * @param {string} eq 用于界定 key 和 value 的子字符串。默认为 '='
 * @param {object} options 自定义解析行为
 * @param {function} options.decodeURIComponent 自定义解码
 */
function parse(qs, sep, eq, options) {
    if (sep === void 0) { sep = '&'; }
    if (eq === void 0) { eq = '='; }
    if (!isString(qs)) {
        return {};
    }
    // 对传入整个url的情况进行过滤,仅取参数部分
    var keys = qs.replace(/^.*\?/, '').split(sep);
    if (keys.length === 0) {
        return {};
    }
    var decode = decodeURIComponent;
    if (options && isFunction(options.decodeURIComponent)) {
        decode = options.decodeURIComponent;
    }
    var kv = {};
    var klen = keys.length;
    for (var i = 0; i < klen; i++) {
        var kvs = keys[i].split(eq);
        var k = decode(kvs[0]);
        var v = decode(kvs[1]);
        if (kv[k] === undefined) {
            kv[k] = v;
        }
        else if (isArray(kv[k])) {
            kv[k].push(v);
        }
        else {
            kv[k] = [kv[k], v];
        }
    }
    return kv;
}
export default parse;
//# sourceMappingURL=parse.js.map