使用Javascript中的三元运算符将字符串转换为布尔值?

Rey*_*rPM 2 javascript jquery

我有一个来自PHP端的结果,json_encode并将所有值作为字符串发送(而不是它的原始类型).来的字符串quote_tax是a 1|0,当然这是true|false例如:

{
  "country_id": "3",
  "country_name": "Italy",
  "contract_tax": "1",
  "quote_tax": "0",
  "contract_inflation": "0",
  "quote_inflation": "0"
}
Run Code Online (Sandbox Code Playgroud)

当我想基于这样的值执行某些操作时,因为它们以字符串形式出现,我需要做这样的事情:

 data.quote_tax == '1' 
                ? $('#contract_tax').val(1).attr('checked', 'checked') 
                : $('#contract_tax').val(0).removeAttr('checked');
Run Code Online (Sandbox Code Playgroud)

我确实知道.parseInt()将它们转换为整数,但我相信那时我需要进行相同的比较但是这种情况比较INT:

 data.quote_tax == 1 
                ? $('#contract_tax').val(1).attr('checked', 'checked') 
                : $('#contract_tax').val(0).removeAttr('checked');
Run Code Online (Sandbox Code Playgroud)

我试过这种方式:

 Boolean(data.quote_tax) == true 
                ? $('#contract_tax').val(1).attr('checked', 'checked') 
                : $('#contract_tax').val(0).removeAttr('checked');
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为Boolean(data.quote_tax)总是评价true即使data.quote_tax = '0'.

我已经检查了这些帖子,但我找不到合适的解决方案:

任何想法在这里有什么问题或如何做到这一点?

Mik*_*uck 6

Javascript中的值是"truthy"或"falsy",这意味着它们将被解释为truefalse在布尔上下文中.在数字的情况下,0false和所有其他人一样true.如果将值转换为数字,则不必执行任何其他转换将其视为布尔值.

var x = parseInt('1');
x ? console.log(true) : console.log(false);

x = parseInt('0');
x ? console.log(true) : console.log(false);
Run Code Online (Sandbox Code Playgroud)

浏览此处获取更多信息.