设置URL路径参数,解析URL参数函数

function throwIfMissing() {
	throw new Error('Missing parameter');
}
			
/*
 * @description 设置URL参数
 * @method setUrlParams
 * @param {String} url url路径,如http://xxx.xx.xxx.xx或pages/veiw/login
 * @param {Object} params 设置的参数,对象格式,如{a: 1, b: 2}
 * @param {Boolean} isCoverOldParam 是否覆盖路径原有参数,默认true
 * @return {String} url 设置参数后的路径如http://xxx.xx.xxx.xx?a=1&b=2
*/
function setUrlParams(url = throwIfMissing(), params = {}, isCoverOldParam = true) {
	if (typeof params !== 'object') throw new TypeError('"params" parameter must be of object type');
	
	if (JSON.stringify(params) === "{}") return url;
	
	let result = '',
		oParam = {},
		param = {};
		
	if (url.indexOf('?') === '-1') {
		result = url;
	} else {
		result = url.split("?")[0];
		oParam = parseUrlParams(url);
	}
	
	isCoverOldParam && Object.assign(param, oParam, params) || Object.assign(param, params, oParam)
	
	result += '?';
	for (let i in param) {
		result += (i + "=" + param[i] + "&");
	}
	
	return result.substr(0, result.length - 1);
}

/*
 * @description 解析路径参数
 * @method parseUrlParams
 * @param {String} url 路径,如http://xxx.xx.xxx.xx?a=1&b=2
 * @return {Object} 参数对象,如{a: 1, b: 2}
*/
function parseUrlParams(url = throwIfMissing()) {
	let search = url.indexOf('?') != -1 ? url.substring(url.lastIndexOf('?') + 1) : '',
		ret = {},
		seg = search.replace(/^\?/, '').split('&'),
		len = seg.length,
		i = 0,
		s;
		
	for (; i < len; i++) {
		if (!seg[i]) {
			continue;
		}
		s = seg[i].split('=');
		ret[s[0]] = s[1];
	}
	
	return ret;
}

使用

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值