如何在字符串中追加或添加对象的属性?

时间:2018-01-11 16:50:20

标签: javascript jquery

我试图通过逗号分隔在字符串中添加对象的属性。但是我没有得到预期的输出,这是我的代码 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

1 个答案:

答案 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())