अपने मूल्यों को एक सरणी में रखें, और जांचें कि क्या आपका आइटम सरणी में है:
if ([1, 2, 3, 4].includes(test.type)) {
// Do something
}
यदि आपके द्वारा समर्थित ब्राउज़र में Array#includes
विधि नहीं है , तो आप इस पॉलीफ़िल का उपयोग कर सकते हैं ।
~
टिल्ड शॉर्टकट की संक्षिप्त व्याख्या :
अद्यतन: चूंकि अब हमारे पास includes
विधि है, इसलिए ~
अब हैक का उपयोग करने का कोई मतलब नहीं है। बस इसे यहां उन लोगों के लिए रखना जो यह जानने में रुचि रखते हैं कि यह कैसे काम करता है और / या दूसरे के कोड में इसका सामना किया है।
इसके बजाय पता चल सके कि परिणाम की की indexOf
है >= 0
, वहाँ एक अच्छी छोटी शॉर्टकट है:
if ( ~[1, 2, 3, 4].indexOf(test.type) ) {
// Do something
}
यहाँ बेला है: http://jsfiddle.net/HYJvK/
यह कैसे काम करता है? यदि कोई आइटम सरणी में पाया जाता है, तो indexOf
उसका सूचकांक लौटाता है। यदि आइटम नहीं मिला, तो यह वापस आ जाएगा -1
। बहुत अधिक विस्तार में जाने के बिना, ~
एक है बिटवाइज़ नहीं ऑपरेटर है , जो 0
केवल के लिए वापस आ जाएगा-1
।
मुझे ~
शॉर्टकट का उपयोग करना पसंद है , क्योंकि यह रिटर्न वैल्यू पर तुलना करने से अधिक रसीला है। मैं चाहता हूं कि जावास्क्रिप्ट में एक in_array
फ़ंक्शन होगा जो सीधे बूलियन (पीएचपी के समान) देता है, लेकिन यह सिर्फ इच्छाधारी सोच है ( अपडेट करें) अब यह करता है।includes
। ऊपर देखें)। ध्यान दें कि inArray
PHP के विधि हस्ताक्षर को साझा करते समय jQuery का , वास्तव में देशी indexOf
कार्यक्षमता की नकल करता है (जो कि विभिन्न मामलों में उपयोगी है, यदि सूचकांक वही है जो आप वास्तव में हैं)।
महत्वपूर्ण नोट: टिल्ड शॉर्टकट का उपयोग करना, विवाद में सजी जा करने के लिए के रूप में कुछ लगता है जोरदार मानना है कि कोड स्पष्ट पर्याप्त नहीं है और हर कीमत (इस जवाब पर टिप्पणी देखें) में बचा जाना चाहिए। यदि आप उनकी भावना को साझा करते हैं, तो आपको .indexOf(...) >= 0
समाधान से चिपके रहना चाहिए ।
थोड़ा लंबा स्पष्टीकरण:
जावास्क्रिप्ट में पूर्णांक पर हस्ताक्षर किए गए हैं, जिसका अर्थ है कि बाएं-बिट बिट साइन बिट के रूप में आरक्षित है; यह इंगित करने के लिए कि क्या संख्या सकारात्मक है या नकारात्मक है, 1
नकारात्मक होने के साथ एक ध्वज ।
यहां 32-बिट बाइनरी प्रारूप में कुछ नमूना सकारात्मक संख्याएं हैं:
1 : 00000000000000000000000000000001
2 : 00000000000000000000000000000010
3 : 00000000000000000000000000000011
15: 00000000000000000000000000001111
अब यहाँ वही संख्याएँ हैं, लेकिन नकारात्मक:
-1 : 11111111111111111111111111111111
-2 : 11111111111111111111111111111110
-3 : 11111111111111111111111111111101
-15: 11111111111111111111111111110001
नकारात्मक संख्याओं के लिए ऐसे अजीब संयोजन क्यों? सरल। एक ऋणात्मक संख्या केवल धनात्मक संख्या + 1 का विलोम है; ऋणात्मक संख्या को धनात्मक संख्या में जोड़ने पर हमेशा उपज प्राप्त करनी चाहिए0
।
इसे समझने के लिए, आइए कुछ सरल द्विआधारी अंकगणित करें।
यहां बताया -1
गया है +1
:
00000000000000000000000000000001 +1
+ 11111111111111111111111111111111 -1
-------------------------------------------
= 00000000000000000000000000000000 0
और यहां बताया -15
गया है +15
:
00000000000000000000000000001111 +15
+ 11111111111111111111111111110001 -15
--------------------------------------------
= 00000000000000000000000000000000 0
हम उन परिणामों को कैसे प्राप्त करते हैं? नियमित रूप से जोड़कर, जिस तरह से हमें स्कूल में पढ़ाया गया था: आप सही-सबसे कॉलम पर शुरू करते हैं, और आप सभी पंक्तियों को जोड़ते हैं। यदि योग सबसे बड़ी एकल-अंक संख्या (जो दशमलव में है) से अधिक है9
, लेकिन बाइनरी में है 1
) से अधिक है, तो हम शेष को अगले कॉलम पर ले जाते हैं।
अब, जैसा कि आप देखेंगे, जब एक ऋणात्मक संख्या को उसके धनात्मक संख्या में जोड़ते हैं, तो सबसे दायाँ स्तंभ जो 0
हमेशा नहीं है 1
, हमेशा दो s होगा, जो एक साथ जोड़े जाने पर परिणाम होगा 2
। दो होने का द्विआधारी प्रतिनिधित्व 10
, हम 1
अगले कॉलम पर ले जाते हैं , और 0
पहले कॉलम में परिणाम के लिए डालते हैं । बाईं ओर के अन्य सभी स्तंभों में केवल एक ही पंक्ति होती है 1
, इसलिए 1
पिछले कॉलम से आगे ले जाए गए को फिर से जोड़ा 2
जाएगा, जो बाद में ले जाएगा ... यह प्रक्रिया तब तक खुद को दोहराती है जब तक हम बाएं-सबसे स्तंभ पर नहीं पहुंच जाते, जहां1
खत्म किया जा करने के लिए यह इतना overflows और खो जाता है, कहीं नहीं जाना है, और हम के साथ छोड़ दिया रहे हैं 0
भर में सब।
इस प्रणाली को 2 का पूरक कहा जाता है । यहां आप इस बारे में और अधिक पढ़ सकते हैं:
हस्ताक्षरकर्ताओं के लिए 2 का पूरक प्रतिनिधित्व ।
अब जबकि 2 के पूरक में क्रैश कोर्स खत्म हो गया है, तो आप देखेंगे कि -1
एकमात्र संख्या जिसका बाइनरी प्रतिनिधित्व है1
सभी के पास है।
~
बिटवाइज़ NOT ऑपरेटर का उपयोग करके , दिए गए संख्या में सभी बिट्स उल्टे हैं। पाने का एकमात्र तरीका है0
सभी बिट्स inverting से वापस है यदि हम 1
सभी के साथ शुरू कर चुके हैं ।
तो, यह सब कहने का एक लंबा-चौड़ा तरीका था जो ~n
केवल तभी वापस आएगा 0
यदि n
है -1
।
in
?