2016-04-08 96 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; 
    } 
}