我需要评估变量并检查它是否等于其他两个变量之一。
我是这样做的:
if (a == b || a == c)
{
}
我觉得有必要以这种方式更好地评估变量。有吗?
答案 0 :(得分:4)
如果您只是将一个值与另外两个值进行比较,那么这是最有效和最优雅的解决方案。无需改变任何东西!
如果你想看一个变量是否等于任何更大的其他变量集合,你可以这样做:
if(([b,c,d,e,f].indexOf(a) !== -1) {
// "a" is equal to either b, c, d, e, or f
}
旧版浏览器可能无法使用indexOf
方法,因此请务必检查它!在旧版浏览器中,您可以使用编写自己的方法来搜索数组或使用任何流行的通用库...大多数都具有此功能。
答案 1 :(得分:2)
..如果你有许多可供比较的变量,你可以使用它:
if ([a,b,c,d,e,f,g,h].indexOf(yourValue) >= 0)
还有一种方法可以做到这一点,万一你愿意多做一些打字:
if (yourValue in {a:0,b:0, c:0, ... })
或者你可能有一个函数返回数组的对象版本:
var wrap = function(){
var obj = {};
for (var i=0; i<arguments.length; i++)
obj[arguments[i]]=0;
return obj;
};
然后:
if (yourValue in wrap(a,b,c,d,e,f,g))
如果你对jQuery很好,你可以使用jQuery's way:
$.inArray(yourValue, [a,b,c,d,e,f])
答案 2 :(得分:1)
您还可以使用Array.prototype.includes
(ES7)。
if ([b, c, d, e].includes(a)) {
// do stuff
}
答案 3 :(得分:0)
我认为你上面提到的是最直接的选择。
此外,在JavaScript中有不同类型的相等运算符。如果两个操作数相等,则==
等于运算符返回布尔值true。 JavaScript将尝试将不同的数据类型转换为相同的类型以进行比较。 ===
运算符是严格相等的运算符,只有两个操作数相等且类型相同时才返回布尔值true。
答案 4 :(得分:0)
var values = [b,c,d,e,f];
for (var i=0,n=values.length; i<n; i++){
if (values[i] == a){
// ...
break;
}
}