布尔到整数转换

use*_*099 45 javascript boolean-expression

我有3个独立的布尔变量,bit1,bit2bit3我需要计算十进制整数相当于在JavaScript?

yck*_*art 77

+true //=> 1
+false //=> 0

+!true //=> 0
+!false //=> 1
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢简洁的答案,但如果您能尽快解释一下,我将不胜感激。 (4认同)

Sam*_*uel 30

三元运算符是一种快速的单行解决方案:

var intVal = bit1 ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

如果您不熟悉三元运算符,则需要采用该形式

<boolean> ? <result if true> : <result if false>
Run Code Online (Sandbox Code Playgroud)

来自Sime Vidas的评论,

var intVal = +bit1;
Run Code Online (Sandbox Code Playgroud)

效果也一样,而且速度更快.

  • 可以使用`+`一元运算符完成数字转换:`var intVal = + bit1;`.这里不需要三元组. (7认同)

Eth*_*own 13

如果您要问的是如何根据bit1(MSB),bit2和bit3(LSB)获取3位整数值,则可以执行以下操作:

var intval = bit1 << 2 | bit2 << 1 | bit3;
Run Code Online (Sandbox Code Playgroud)

left shift(<<)会自动将布尔值转换为相应的int值.

现场演示: http ://jsfiddle.net/DkYqQ/

  • Lucero,我在回答中提到我以“ bit1”为MSB。它可以任意选择。 (2认同)

Tim*_*Tim 12

Number(true) // => 1
Number(false) // => 0
Run Code Online (Sandbox Code Playgroud)


Otm*_*ari 6

使用~~:

bit1 = ~~bit1; // bit1 = true will return 1 or bit1 = false rtuen 0
bit2 = ~~bit2;
bit3 = ~~bit3;

sum = bit1 + bit2 + bit3;
Run Code Online (Sandbox Code Playgroud)