获取字符串中指定参数方式
一、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) {
var q = {};
var _idx = url.indexOf('?')
if (_idx != -1) {
url = url.substr(_idx + 1)
}
var _params = url.replace(/#.*/g, '').split('&')
for (var i = 0; i < _params.length; i++) {
var 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 + '=).*?(?=[&$])'
var _reg = new RegExp('(?<=(?:\\?|\\&|^)' + key + '=).*?(?=[&$])')
return url.match(_reg)[0]
}
const _y = _regURLParam(_URL, 'y')
优点:耗时少;
缺点:获取不灵活
控制台察看耗时对比