获取字符串中参数

一、URLSearchParams 方式

const _URL = 'abc?x=1&y=2&z=3'
const params = new URLSearchParams(_URL) 
// params.get('y')

优点:代码简洁,获取方便;
缺点:兼容性差,iOS 10.3+和 Android 5+

二、& 符分割方式

function _getUrlParam(url) { 
	const q = {};
	const _idx = url.indexOf('?') 
	if (_idx != -1) { 
		url = url.substring(_idx + 1) 
	} 
	
	const _params = url.replace(/#.*/g, '').split('&')
	for (let i = 0; i < _params.length; i++) { 
		const pair =  _params[i].split('=') 
		if (!pair[0]) { 
			continue 
		} 
		
		q[pair[0]] = pair[1] 
	} 
	
	return q 
} 

const _URL =  'abc?x=1&y=2&z=3' 
const params = _getUrlParam(_URL); 
// params.y

优点:获取方便;
缺点:代码较多,耗时多

三、正则匹配

const _URL = 'abc?x=1&y=2&z=3'
function _regURLParam(url, key) { 
	// 分组方式 '(^|\\?|&)' + key + '=(.*?)[&$]' 
	// 非分组方式 '(?<=(?:\\?|\\&|^)' + key + '=).*?(?=[&$])' 
	const _reg = new RegExp('(?<=(?:\\?|\\&|^)' + key + '=).*?(?=[&$])') 
	return url.match(_reg)[0] 
} 

// _regURLParam(_URL, 'y')

优点:耗时少;
缺点:获取不灵活



控制台察看耗时对比