Javascript:检查A是否等于B或C的最优雅方法是什么?

时间:2012-07-04 17:19:41

标签: javascript evaluation

我需要评估变量并检查它是否等于其他两个变量之一。

我是这样做的: if (a == b || a == c) { }

我觉得有必要以这种方式更好地评估变量。有吗?

5 个答案:

答案 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;
   }
}