我试图通过逗号分隔在字符串中添加对象的属性。但是我没有得到预期的输出,这是我的代码 https://jsfiddle.net/xbept0jn/2/ 的输出
business/codes/bank-abc,state-pqrbusiness/codes/bank-abc,state-pqrbusiness/codes/bank-abc,state-pqrbusiness/codes/bank-abc,state-pqr.cms
预期输出
business/codes/bank-abc,state-pqr.cms
码
var obj ={
b:'abc',
s:'pqr',
d:'',
br:''
}
function changeUrlUsingPushState() {
var str = "business/codes/";
str += obj.b ? 'bank-' + obj.b : str;
str += obj.s ? ',state-' + obj.s : str;
str += obj.d ? ',district-' + obj.d : str;
str += obj.br ? ',branch-' + obj.br : str;
str +='.cms';
return str;
}
console.log(changeUrlUsingPushState())
案例二 如果我拿这个对象
var obj ={
b:'abc',
s:'',
d:'',
br:'jjj'
}
输出应为business/codes/bank-abc,branch-jjj.cms
答案 0 :(得分:1)
每次都附加字符串,而不是在值为falsy时不附加任何内容。 str += obj.b ? 'bank-' + obj.b : str
可以更改为str += obj.b ? 'bank-' + obj.b : ''
,并且可以正常运行:
var obj = {
b: 'abc',
s: 'pqr',
d: '',
br: ''
}
function changeUrlUsingPushState() {
var str = "business/codes/";
str += obj.b ? 'bank-' + obj.b : '';
str += obj.s ? ',state-' + obj.s : '';
str += obj.d ? ',district-' + obj.d : '';
str += obj.br ? ',branch-' + obj.br : '';
str += '.cms';
return str;
}
console.log(changeUrlUsingPushState())