// 假如我们需要实现下列需求: // 数据请求方式是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)