2011-05-24 14 views
30

मैं एक if/else कथन लिखना चाहता हूं जो परीक्षण करता है कि पाठ इनपुट का मान दो अलग-अलग मानों में से एक के बराबर नहीं है। इस तरह (बहाना मेरी छद्म अंग्रेजी कोड):यदि कोई चर दो मानों के बराबर नहीं है तो मैं कैसे परीक्षण करूं?

 
var test = $("#test").val(); 
if (test does not equal A or B){ 
    do stuff; 
} 
else { 
    do other stuff; 
} 

मैं कैसे लाइन 2 पर अगर बयान के लिए शर्त लिख सकता हूँ?

if(test != "A" && test != "B") 

आप शायद जावास्क्रिप्ट तार्किक ऑपरेटरों पर पढ़ना चाहिए:

उत्तर

94

! (निषेध ऑपरेटर) के रूप में "नहीं", || (बूलियन-या ऑपरेटर) के रूप में "या" और && के रूप में "और" (बूलियन और ऑपरेटर) की Think। Operators और Operator Precedence देखें।

इस प्रकार

:

if(!(a || b)) { 
    // means neither a nor b 
} 
हालांकि

, De Morgan's Law का उपयोग कर, यह के रूप में लिखा जा सकता है:

if(!a && !b) { 
    // is not a and is not b 
} 

a और ऊपर b किसी भी अभिव्यक्ति हो सकती है (जैसे test == 'B' या जो कुछ भी यह करने की जरूरत है) ।

एक बार फिर, अगर test == 'A' और test == 'B', अभिव्यक्ति कर रहे हैं, 1 प्रपत्र के विस्तार पर ध्यान दें:

// if(!(a || b)) 
if(!((test == 'A') || (test == 'B'))) 
// or more simply, removing the inner parenthesis as 
// || and && have a lower precedence than comparison and negation operators 
if(!(test == 'A' || test == 'B')) 
// and using DeMorgan's, we can turn this into 
// this is the same as substituting into if(!a && !b) 
if(!(test == 'A') && !(test == 'B')) 
// and this can be simplified as !(x == y) is the same as (x != y) 
if(test != 'A' && test != 'B') 
+2

क्या ऐसा करने के लिए कोई छोटा रास्ता है (छद्म कोड): 'if (test === ('ए' || 'बी')) '(मैंने लॉजिकल सादगी के लिए'! 'हटा दिया है, मैं हूं अवधारणा के बारे में अधिक उत्सुक) –

+1

'if (x == 2 | 3)' जैसे छोटे संस्करण के लिए अच्छा होगा। –

2

मुझे लगता है कि jQuery

if (0 > $.inArray(test, [a,b])) { ... } 
+6

-1 '$ .inArray (परीक्षण, के लिए परीक्षण करने के लिए की जरूरत है [क, ख]) === -1' – Raynos

+2

अच्छा, निष्पक्ष खेल। चीजों को साफ़ करने के लिए धन्यवाद! – Zlatev

+0

यदि किसी के साथ अवांछित परिणाम मिलते रहें तो आप यह भी जांच सकते हैं कि परीक्षण के प्रकार और ए, बी को भी मिलना चाहिए यदि आपको परिणाम के रूप में सत्य होने की आवश्यकता है। –

1
var test = $("#test").val(); 
if (test != 'A' && test != 'B'){ 
    do stuff; 
} 
else { 
    do other stuff; 
} 
+3

पढ़ता है आपका मतलब है 'test! = A && test! = B' , अन्यथा यह हमेशा निष्पादित होगा (जब तक परीक्षण == ए == बी) – Konerak

+0

@ कोनेरक, ओपी ने कहा 'या ' – Neal

+0

@Neal: ओपी चाहता है कि कोड निष्पादित हो यदि मूल्य' दो में से किसी एक के बराबर नहीं है -> **कोई भी एक! – Konerak

7

का उपयोग कर सामान्य तौर पर यह कुछ इस तरह किया जाएगा है।

1

आप अपने छद्म कोड में शब्द "या" का इस्तेमाल किया है, लेकिन अपने पहले वाक्य के आधार पर, मुझे लगता है तुम्हारा मतलब है और। इसके बारे में कुछ भ्रम था क्योंकि ऐसा नहीं है कि लोग आम तौर पर कैसे बोलते हैं।

आप चाहते हैं:

var test = $("#test").val(); 
if (test !== 'A' && test !== 'B'){ 
    do stuff; 
} 
else { 
    do other stuff; 
} 
12

ECMA2016 सबसे छोटा जवाब है, विशेष रूप से अच्छा है जब againt जाँच से अधिक मान:

if (!["A","B", ...].includes(test)) {} 
+1

यह प्रश्न का उत्तर देने के लिए जावास्क्रिप्ट तरीका है। वह इस बारे में नहीं पूछ रहा था कि && या || का उपयोग कैसे करें लेकिन वह एक शॉर्टकट की तलाश में था जो अनुमति देता है; test == ('string1' || string2) जो बराबर होगा (test == 'string2') || (परीक्षण == स्ट्रिंग 1) – Louis

+0

यहां एक पुराना लेकिन प्रासंगिक संदर्भ है; https://www.tjvantoll.com/2013/03/14/better-ways-of-comparing-a-javascript-string-to-multiple-values/ – Louis

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