在Javascript中转换True->1和False->0?

ntjbwcob  于 2023-01-04  发布在  Java
关注(0)|答案(5)|浏览(292)

此外:
第一个月
有什么小窍门可以在Javascript中“转换”True->1False->0吗?
我已经找过了,但没有找到任何替代品
你说的“小把戏”是什么意思
答案:与~~6.6相同是Math.floor的一个技巧

yvgpqqbh

yvgpqqbh1#

有很多方法可以做到这一点

// implicit cast
+true; // 1
+false; // 0
// bit shift by zero
true >>> 0; // 1, right zerofill
false >>> 0; // 0
true << 0; // 1, left
false << 0; // 0
// double bitwise NOT
~~true; // 1
~~false; // 0
// bitwise OR ZERO
true | 0; // 1
false | 0; // 0
// bitwise AND ONE
true & 1; // 1
false & 1; // 0
// bitwise XOR ZERO, you can negate with XOR ONE
true ^ 0; // 1
false ^ 0; // 0
// even PLUS ZERO
true + 0; // 1
false + 0; // 0
// and MULTIPLICATION by ONE
true * 1; // 1
false * 1; // 0

您也可以使用除以1true / 1; // 1,但我建议尽可能避免除法。
此外,许多非一元运算符都有一个assignment version,所以如果你有一个你想要转换的变量,你可以很快地完成它。
您可以看到this jsperf的不同方法的比较。

yc0p9oo0

yc0p9oo02#

下面是一个更符合逻辑的方法Number()

Number(true) // = 1
Number(false) // = 0
qeeaahzv

qeeaahzv3#

...也可以使用+true+false

6g8kf2rb

6g8kf2rb4#

可以使用~~boolean,其中boolean(显然)是一个布尔值。

~~true  // 1
~~false // 0
vohkndzv

vohkndzv5#

将默认开关值从布尔值转换为数字0或1以匹配后端值。

0应转换为“
1应转换为“

这可以通过以下逻辑实现:

!!0 => false
!!1 => true

相关问题