我有一个if语句来检查多个条件。如果至少有一件事返回false,我希望它跳过条件语句。我可以看到,如果至少有一件事是真的,它目前正在接受条件陈述。
if((api != 'abosp') || (api !='sersp') || (api !='volsp') || (api !='consp') || (api !='givsp') || (api !='blosp')){
console.log("api: " + api );
api = 'cussp'
}
实现这种逻辑的正确方法是什么?
目前,如果api =='abosp',它仍会传递给条件语句而不是跳过它。
答案 0 :(得分:3)
你应该改变你的|| for和operator:&&。更进一步,干净"方法是:
banned = ["abosp", "sersp", "volsp", "consp", "givsp", "blosp"]
if(banned.indexOf(api) == -1){ // if api is not in list
console.log("api: " + api );
api = 'cussp'
}
答案 1 :(得分:1)
实际上,您的if
无法评估为true
,因为api
无法检查所有值。我想你需要一个and (&&)
而不是or (||)
:
if ((api != 'abosp') && (api !='sersp') && ...
在这种情况下,您可以使用关联数组来获得更简洁的代码:
d = {abosp: 1, sersp: 1, volsp: 1, consp: 1, givsp: 1, blosp: 1};
if (!d[api]) api = 'cussp';
答案 2 :(得分:0)
我认为你正在寻找&&而不是||。
如果任何单独的比较返回false,这将跳过条件语句。