// 假如我们需要实现下列需求:
// 数据请求方式是get,参数有四个分别是obj的每个key,
// 如果key对应的value存在则正常拼接,如果不存在则直接去掉这一项
// 第一种:
// 定义一个obj,里面a,c的value为空
var obj={
a:"",
b:2,
c:"",
d:4
}
// 需要请求的url地址
var url="aaa/bbb?"
if(obj.a){
// 如果obj.a存在,则进行正常拼接
url=url+'a'+'='+obj.a;
}
if(obj.b){
// 如果obj.a存在,还需要用三目判断前面的key和对应value是否存在
// 如果存在则需加&,如果不存在则直接拼接
url=url+(url=='aaa/bbb?'?'b':'&b')+'='+obj.b;
}
if(obj.c){
url=url+(url=='aaa/bbb?'?'c':'&c')+'='+obj.c;
}
if(obj.d){
url=url+(url=='aaa/bbb?'?'d':'&d')+'='+obj.d;
}
// 第二种:
// 定义一个obj,里面a,c的value为空
var obj={
a:null,
b:0,
c:"",
d:0
}
// 需要进行请求的url地址
var url="aaa/bbb?"
遍历整个对象
for (let key in obj){
// 如果该项的obj不为空(等于0也可以),并且是第一个不为空的参数时,直接进行拼接,不用加&
if(url==='aaa/bbb?' && obj[key] || url==='aaa/bbb?' && obj[key]===0){
url=url+key+'='+obj[key]
// 如果该项的obj不为空(等于0也可以),但不是第一个不为空的参数时,加&进行拼接
}else if(url!=='aaa/bbb?' && obj[key] || url!=='aaa/bbb?' && obj[key]===0){
url=url+'&'+key+'='+obj[key]
}
}
console.log(url)