2016-04-08 53 views
0

我有這樣的條件(這是簡單得多,他們實際上是事件):的JavaScript確定哪些OR語句觸發if語句

if(!a || !b || !c || !d){ 
    //do something with 1,b,c, or d 
} 

我怎麼確定哪些變種引發的,如果?如果(a)否則如果(b)在這裏不是一個好的選擇,因爲它會導致很多重複的代碼。

+0

你只需要一個變種,還是你需要對所有的變種行事'!var'是真的?如果'!a'是真的,但'!c'也是如此,你是否需要兩者? –

+0

你想要簡化這種方式?爲什麼'如果(a)否則如果(b)'導致大量重複的代碼? – Oriol

+1

JS中沒有'or'運算符。 – 2016-04-08 18:31:28

回答

0

你可以只嘗試與返回的第一個真正的狀況的指數函數,或-1,如果所有條件都是假的:在一個陣列

var conditions = []; 

conditions.push(a); 
conditions.push(b); 
conditions.push(c); 
conditions.push(d); 
// ... 

var triggerer = (function(){ 
    for(var i = 0; i < conditions.length; i++){ 
     if(conditions[i]){ return i; }; 
    } 
    return -1; 
})(); 

if(triggerer != -1){ 
    // Do something with conditions[triggerer] 
}else{ 
    // Do something when everything is false 
} 
0

存儲你的條件,並檢查他們在一個循環:

var values = [a, b, c, d]; 
for(var i = 0; i < values.length; i++) { 
    if(!values[i]) { 
     //... 
     // `values[i]` is the *first* condition that satisfies the `if` statement. 
     break; 
    } 
}