2013-02-09 4 views
40

इसके अलावा:जावास्क्रिप्ट में सही-> 1 और झूठी-> 0 कनवर्ट करें?

true ? 1 : 0

कोई छोटी चाल जो "का अनुवाद" True->1 और जावास्क्रिप्ट में False->0 कर सकते हैं?

मैं खोज की है, लेकिन किसी भी विकल्प

क्या आप "संक्षेप चाल" मतलब है नहीं मिल सकता है?

जवाब: ~~6.6 रूप में एक ही के लिए Math.floor

+1

संभावना है कि आपको शायद ऐसा करने की आवश्यकता नहीं है। कोई भी अंकगणितीय ऑपरेशन वैसे भी आपके बूलियन को परिवर्तित करेगा: उदाहरण के लिए 'सत्य + सत्य + सत्य == 3' – Eric

+1

कोई भी ऑपरेटर जो अपने ऑपरेटरों को संख्यात्मक मानों में परिवर्तित करता है। सभी ऑपरेटरों की सूची: http://es5.github.com/#x11-toc। –

+0

@ फ़ेलिक्सक्लिंग क्या आप लिंक को ठीक कर सकते हैं? –

उत्तर

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 

तुम भी 1, true/1; // 1 द्वारा विभाजन का उपयोग कर सकते हैं, लेकिन मैं से बचने की सलाह देंगे जहां संभव हो विभाजन।

इसके अलावा, गैर-यूनरी ऑपरेटरों में से कई assignment version हैं, इसलिए यदि आपके पास एक चर है जिसे आप परिवर्तित करना चाहते हैं, तो आप इसे बहुत जल्दी कर सकते हैं।

आप this jsperf के साथ विभिन्न विधियों की तुलना देख सकते हैं।

+0

क्या आप >>> पर विस्तार कर सकते हैं? –

+1

'>> 'है [_Zero-fill सही shift_] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators# >>> _% 28 ज़ीरो-fill_right_shift% 29) bitwise ऑपरेटर। 'x >>> y' का अर्थ है" 'y' से दाईं ओर 'x' में दाईं ओर प्रत्येक बिट को स्थानांतरित करें, अब' 0'' के साथ खाली कॉलम भरें। 'Y = 0' का चयन करने का अर्थ है कि आप बिट्स को कहीं भी नहीं ले जा रहे हैं, लेकिन यह अभी भी कास्ट करता है। –

+0

wo ...... jsperf को देखो। Ive सिर्फ एफएफ के साथ परीक्षण किया। मतभेदों को देखो। –

8

एक चाल आप ~~boolean, उपयोग कर सकते हैं जहां boolean (जाहिर है) एक बूलियन है।

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

+1 मुझे विश्वास नहीं है कि मैंने एक ही उदाहरण उपयोग की आपूर्ति की है। (और यह भी स्वीकार्य नहीं था) –

12

... या आप +true उपयोग कर सकते हैं और +false

संबंधित मुद्दे