如何在模型提取时将1转换为true或0转换为false

Chr*_*s M 69 javascript jquery backbone.js

我有一个模型,它使用来自mysql数据库的JSON响应进行设置.模型数据使用true或false设置为数据库中的boolean/tinyint字段,该字段使用10.

在我看来,我有一个绑定,检查带有下划线的布尔值_.isBoolean.当然,当我的模型接收数据时,它被设置为1或者0不是true或false,并且_.isBoolean检查失败.

无论如何要么正确地让我的来自mysql的JSON响应是一个布尔值true或false值而不是1或者0,或者最好是有一种方法让我的模型在获取时(在视图呈现之前)自我更新true或者false基于它的1或0属性?

例如我的模型的数据看起来就像{"isChecked":"1"}我需要的那样{"isChecked":true}

非常感谢你提出的任何建议!

Vit*_*huk 152

所有你需要的是转换stringintwith +并将结果转换为boolean !!:

var response = {"isChecked":"1"};
response.isChecked = !!+response.isChecked
Run Code Online (Sandbox Code Playgroud)

您可以在parse方法中执行此操作:

parse : function (response) {
  response.isChecked = !!+response.isChecked;
  return response;
}
Run Code Online (Sandbox Code Playgroud)

  • +1首先转换为`int`.`!! + "1"; // true`,`!! +"0"; // false`,`!! + 1; // true`,`!! + 0; //假 (13认同)

dav*_*ave 65

使用双倍而不是:

!!1 = true;

!!0 = false;

obj.isChecked = !!parseInt(obj.isChecked);
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,但由于某些原因我有一个我仍然需要解析它``value =(!! parseInt(value)?true:false)` (2认同)

bma*_*pin 33

这是另一个选项,它更长但可能更具可读性:

Boolean(Number("0")); // false
Boolean(Number("1")); // true
Run Code Online (Sandbox Code Playgroud)


Som*_*ica 11

将比较分配给属性值

JavaScript的

您可以将属性的比较分配给 "1"

obj["isChecked"] = (obj["isChecked"]==="1");
Run Code Online (Sandbox Code Playgroud)

这仅计算String的值"1".其他变量也会变得虚假,就像实际的变量一样typeof number.(即obj["isChecked"]=1)

如果你想成为oriscrimate "1"1,你可以使用:

obj["isChecked"] = (obj["isChecked"]=="1");
Run Code Online (Sandbox Code Playgroud)

示例输出

console.log(obj["isChecked"]==="1"); // true
console.log(obj["isChecked"]===1); // false
console.log(obj["isChecked"]==1); // true
console.log(obj["isChecked"]==="0"); // false
console.log(obj["isChecked"]==="Elephant"); // false
Run Code Online (Sandbox Code Playgroud)

PHP

PHP中的相同概念

$obj["isChecked"] = ($obj["isChecked"] == "1");
Run Code Online (Sandbox Code Playgroud)

适用于JavaScript的上述运算符限制.

双重不

'double not'也有效.当人们第一次阅读它时会让人感到困惑,但它在两种语言中都适用于整数/数字类型值.但它在JavaScript中不适用于字符串类型值,因为它们总是评估为true:

JavaScript的

!!"1"; //true
!!"0"; //true
!!1; //true
!!0; //false
!!parseInt("0",10); // false
Run Code Online (Sandbox Code Playgroud)

PHP

echo !!"1"; //true
echo !!"0"; //false
echo !!1; //true
echo !!0; //false
Run Code Online (Sandbox Code Playgroud)