UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

72 lines (67 loc) 2.3 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib_es6 = require('../tslib.es6-01322ba9.js'); var url_formatUrlParams = require('./format-url-params.js'); var url_resolveUrlParams = require('./resolve-url-params.js'); function simpleRemoveUrlParams(url, removeKeyArr) { if (url === void 0) { url = ''; } if (removeKeyArr === void 0) { removeKeyArr = []; } if (!url.includes('?') || !removeKeyArr.length) { return url; } var list = url.split('?'); var query = list[1].split('&').reduce(function (acc, item) { var _a; var list = item.split('='); return tslib_es6.__assign(tslib_es6.__assign({}, acc), (_a = {}, _a[list[0]] = list[1], _a)); }, {}); var queryStr = Object.keys(query).filter(function (item) { return !removeKeyArr.includes(item); }).map(function (item) { return "".concat(item, "=").concat(query[item]); }).join('&'); if (!queryStr) { return list[0]; } return "".concat(list[0], "?").concat(queryStr); } function isSimpleUrl(url) { if (url === void 0) { url = ''; } return url.indexOf('?') === url.lastIndexOf('?'); } /** * @export removeUrlParams * @description 移除参数 * @param {string} url 地址 * @param {string} removeKeyArr 待移除的参数名集合 * @returns 重新拼接的地址 * @example * const url = removeUrlParams('http://www.test.com/#/detail?a=1&b=2&c=3', ['a', 'b']); // 'http://www.test.com/#/detail?c=3' * const url2 = removeUrlParams('http://www.test.com?d=4&f=6#/detail?a=1&b=2&c=3', ['a', 'd']); // 'http://www.test.com/#/detail?b=2&c=3&f=6' */ function removeUrlParams(url, removeKeyArr, forceHistoryMode) { if (url === void 0) { url = ''; } if (isSimpleUrl(url)) { return simpleRemoveUrlParams(url, removeKeyArr); } // 获取链接上的所有参数 var urlParamsObj = url_resolveUrlParams.resolveUrlParams(url); // 移除指定的key集合 var keepParamsObj = {}; Object.keys(urlParamsObj).forEach(function (key) { if (!removeKeyArr.includes(key)) { keepParamsObj[key] = urlParamsObj[key]; } }); // 根据移除后的参数集合,重新拼接地址 return url_formatUrlParams.formatUrlParams(url, keepParamsObj, forceHistoryMode); } exports.removeUrlParams = removeUrlParams;