直接上代码
<script>
// 指定参数名称,返回该参数的值 或者 空字符串
// 不指定参数名称,返回全部的参数对象 或者 {}
// 如果存在多个同名参数,则返回数组
/**
* @param {String} sUrl
* @param {String} sKey
* @return {String || Array || Object}
*/
function getUrlParam(sUrl, sKey) {
if (sUrl.split("?").length == 1) { //如果没有参数返回空
return ''
}
let str = sUrl.split("?")[1]; //获取问号后面的字符串
strs = str.split("&"); //把参数拆成数组
let resArr = []
for (var i = 0; i < strs.length; i++) { //写入对象
// resurl[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
if (strs[i].split("=")[0] == sKey) { //如果存在这个数据,也存入数组,
resArr.push(decodeURI(strs[i].split("=")[1]))
}
}
let resultUrl = resArr.length == 1 ? resArr[0] : resArr //如果数组长度等于1,则返回值,大于一,返回数组
resultUrl = resultUrl[0] ? resultUrl : '' //如果值不存在,则返回空字符串
return resultUrl
}
console.log(getUrlParam('https://www.baidu.com/path?a=1&b=2', 'a'),''); // 1
console.log(getUrlParam('https://www.baidu.com/path?a=1&b=2', 'c')); // ''
console.log(getUrlParam('https://www.baidu.com/path?a=1&b=2&a=4', 'a')); // ['1', '4']
</script>