2011-05-24 94 views
30

我想寫一個if/else語句來測試文本輸入的值是否等於兩個不同值中的任何一個。這樣的(請原諒我的僞英文代碼):如何測試變量是否等於兩個值之一?

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

我怎樣寫的條件第2行的if語句?

回答

94

!(否定運算符)視爲「不」,將||(布爾運算符)視爲「或」並將&&(布爾運算符)視爲「和」。見OperatorsOperator 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',是表情,注意第一形式的擴展:

// 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 ===('A'||'B'))'(爲了邏輯的簡單,我刪除了'!'對這個概念更加好奇) – 2017-01-18 21:23:01

+1

像'if(x == 2 | 3)'這樣的短版本會很好。 – 2017-04-16 16:56:04

2

我這樣做,使用jQuery

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

-1需要測試的'$ .inArray(試驗,[A,B] )=== -1' – Raynos 2011-05-24 19:56:42

+2

好,公平。感謝您清理東西! – Zlatev 2011-05-24 20:30:24

+0

如果有人繼續得到不希望的結果,那麼你也可以檢查,如果你需要得到真正的結果,測試的類型和a,b必須匹配。 – 2013-04-02 05:33:50

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

您的意思是'test!= A && test!= B' ,否則它會一直執行(除非測試== A == B) – Konerak 2011-05-24 19:33:39

+0

@Konerak,OP表示或' – Neal 2011-05-24 19:34:18

+0

@Neal:如果值'不等於2'中的任何一個, **任意一個! – Konerak 2011-05-24 19:35:28

7

一般來說它會是這樣的:

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

你或許應該對JavaScript的邏輯運算符讀了。

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

這是回答問題的JavaScript方式。他並沒有問及如何使用&&或||但他正在尋找允許的捷徑;測試==('string1'|| string2)這將相當於(test =='string2')|| (test == string1) – Louis 2017-07-19 18:12:39

+0

下面是一箇舊的但相關的參考文獻; https://www.tjvantoll.com/2013/03/14/better-ways-of-comparing-a-javascript-string-to-multiple-values/ – Louis 2017-07-19 18:17:24

相關問題