Подтвердить что ты не робот

Преобразовать True-> 1 и False-> 0 в Javascript?

Кроме того:

true ? 1 : 0

есть ли какой-нибудь короткий трюк, который может "переводить" True->1 и False->0 в Javascript?

Я искал, но не нашел альтернативы

Что означает "короткий трюк"?

ответ: тот же, что и ~~6.6, является трюком для Math.floor

4b9b3361

Ответ 1

Много способов сделать это

// 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

Вы также можете использовать деление на 1, true / 1; // 1, но я бы посоветовал избегать разделения там, где это возможно.

Кроме того, многие не унарные операторы имеют присваивание версии, поэтому, если у вас есть переменная, которую вы хотите вы можете сделать это очень быстро.

Вы можете увидеть сравнение различных методов с этот jsperf.

Ответ 2

... или вы можете использовать +true и +false

Ответ 3

Вы можете использовать ~~boolean, где boolean является (очевидно) логическим.

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