老师请问一下,这节老师这个举例的BUG还怎么补呀?要是地址字符串最后出现两个以上的问号该怎么去写?
来源:2-1 includes()
帅得无心敲代码
2021-02-28 00:06:41
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const imooc = 'https://www.imooc.com/course/list??';
const addURLParam = (url,name,value) => {
let arrStr = [...imooc].slice(0,33).join('');
arrStr += arrStr.includes('?')?'&':'?';
return arrStr += `${name}=${value}`;
}
console.log(addURLParam(imooc,'c','fe'));
console.log(addURLParam(imooc, 'sort', 'pop'));
</script>
</body>
</html>
1回答
好帮手慕久久
2021-02-28
同学你好,解答如下:
1、如果地址栏后面是问号结尾,可以如下这样处理:
<script> const imooc = 'https://www.imooc.com/course/list?name=a&'; const addURLParam = (url, name, value) => { // 先判断是否有 问号 if (url.includes('?')) { //如果有问号 if (url.substr(url.length - 1, 1) === '?' || url.substr(url.length - 1, 1) === '&') { //如果地址后面是? 或者 & // 就加个空字符串 url += '' } else { // 否则,就直接加上& url += '&' } } else { // 没有问号 就加上? url += '?' } return url += `${name}=${value}`; } console.log(addURLParam(imooc, 'c', 'fe')); console.log(addURLParam(imooc, 'sort', 'pop')); </script>
2、我们不考虑地址出现“??”的情况,只考虑输入的地址形式是正确的。即只考虑如下三种形式即可:
没有?、&:https://www.imooc.com/course/list
?后面,还有内容:https://www.imooc.com/course/list?name=a
?后面的内容中有&:https://www.imooc.com/course/list?name=a&
由于用户输入的地址形式是不确定的,我们没办法用一个方法将各种情况都考虑到。所以通常情况下,我们写的方法,只针对其中几种情况进行处理。或者让后端人员,在用户输入的地址不符合要求时,提示用户“请输入正确的地址”。
同学写的方法是可以处理“??”的情况的,只是可以优化一下,如下:
祝学习愉快!
相似问题