2013-02-09 50 views
40

再說:在Javascript中轉換True-> 1和False-> 0?

true ? 1 : 0

沒有任何短絕招可以 「翻譯」 在Javascript True->1False->0

我已經搜查,但找不到任何替代

你說的「短絕招」的意思

答案:同~~6.6Math.floor

+1

你可能不需要這樣做。任何算術運算都會轉換你的布爾值:例如'true + true + true == 3' – Eric 2013-02-09 11:56:52

+1

任何將其操作數轉換爲數值的操作符都可以。所有運營商名單:http://es5.github.com/#x11-toc。 – 2013-02-09 12:27:37

+0

@FelixKling你能修復這個鏈接嗎? – 2013-09-30 07:42:45

回答

118

很多方法可以做到這一點

// 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與不同方法的比較。

+0

能否詳細說一下>>>? – 2013-02-09 12:04:57

+1

'>>>'是[_Zero-fill right shift_](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators# >>> _%28Zero-fill_right_shift%29 )按位運算符。 'x >>> y'的意思是「用'y'將'x'中的每一位向右移動,用'0'填充現在空的列。選擇'y = 0'意味着你不會在任何地方移動這些位,但它仍然可以播放。 – 2013-02-09 12:08:06

+0

wo ......看看jsperf。我剛剛測試過FF。看看差異。 – 2013-02-09 12:35:23

8

一招可以使用~~boolean,其中boolean是(顯然)一個布爾值。

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

+1我不敢相信我提供了相同的示例用法。 (並沒有想到它在這裏也可以接受) – 2013-02-09 11:48:23

12

...或者你可以使用+true+false

相關問題