老师你好,在学es时看到一个很有意思的例子,具体见如下我自己写的代码:
<script>
let url = 'http//www.imooc.com/course/list';
let url1 = 'http//www.imooc.com/course/list?username=xm';
let url2 = 'http//www.imooc.com/course/list?username=xm&';
const addURLParam = (url, name, value) => {
// url += url.includes("?") ? '&' : '?';
//.substr(url.length - 1, 1)
url += url.includes("?") ? '' && (url.substr(url.length - 1, 1).includes("?") ? '' : '&' && url.substr(url.length - 1, 1).includes("&") ? '' : '&') : '?';
url += `${name}=${value}`;
return url;
};
url = addURLParam(url, 'password', 'admin');
console.log(url);
url1 = addURLParam(url1, 'password', 'admin');
console.log(url1);
url2 = addURLParam(url2, 'password', 'admin');
console.log(url2);
</script>
做到这里我发现不管怎么该都实现不了最终的结果:
这是想要的结果:

这是按照我自己的思路实现的结果

我实现的思路就是:先使用includes方法判断url中是否包含?;如果包含?,再判断url最后一位字符串是不是?或&符号,是的话就拼接空字符串,否则就拼接&;如果不包含?,就拼接一个?。
但是我发现无论怎么设计、怎么改都不能实现最终想要的结果,想请你帮忙看看