// 假如我們需要實現下列需求: // 數據請求方式是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)