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

Javascript:what';检查A是否等于B或C的最优雅的方法是什么?,javascript,evaluation,Javascript,Evaluation,我需要计算一个变量,并检查它是否等于其他两个变量之一 我是这样做的: if(a==b | | a==c) { } 我觉得应该有更好的方法用这种方式评估变量。有吗?如果您只是将一个值与另外两个值进行比较,这是最有效、最优雅的解决方案。不需要改变任何东西 如果要查看一个变量是否等于任何一个较大的其他变量集合,可以执行以下操作: if(([b,c,d,e,f].indexOf(a) !== -1) { // "a" is equal to either b, c, d, e, or f } in

我需要计算一个变量,并检查它是否等于其他两个变量之一

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


我觉得应该有更好的方法用这种方式评估变量。有吗?

如果您只是将一个值与另外两个值进行比较,这是最有效、最优雅的解决方案。不需要改变任何东西

如果要查看一个变量是否等于任何一个较大的其他变量集合,可以执行以下操作:

if(([b,c,d,e,f].indexOf(a) !== -1) {
  // "a" is equal to either b, c, d, e, or f
}

indexOf
方法在较旧的浏览器中可能不可用,因此请务必检查它!在传统浏览器中,您可以使用“编写自己的方法”在数组中搜索,或使用任何流行的通用库。。。大多数人都会有这个功能。

我认为你上面所说的是最简单的选择


另外,在JavaScript中有不同类型的相等运算符。如果两个操作数相等,则
==
相等运算符返回布尔值true。JavaScript将尝试将不同的数据类型转换为相同的类型,以便进行比较。
==
运算符是严格相等运算符,仅当两个操作数相等且类型相同时才返回布尔真值。

。。如果你有很多变量要比较,你可能会用到:

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

如果您对jQuery没有意见,可以使用:

var值=[b,c,d,e,f];
对于(var i=0,n=values.length;i您也可以使用(ES7)

if([b,c,d,e])包括(a)){
//做事
}

拜托,这会适得其反。你能解释一下原因吗?从后面的评论来看,这可能是重复的,这实际上是另一个问题。我只是觉得我这样做有点多余,但这可能是因为我在CS方面没有理论背景。@exizt:看看答案;写一个函数打开,循环,检查浏览器支持,包括一个库;我需要说更多。如果我需要将其与更多值进行比较,例如5或6,该怎么办?只需创建一个包含所有要比较的值的数组,并在该数组上调用
indexOf
方法,其中一个值作为唯一参数。但是对于两个值这绝对是一种过分的杀伤力,不是吗?最肯定的是。对于两个值,原始问题中的示例是最好的。这对于不同数量的可能性是最好的,或者如果可能性的数量是预先确定的,以减少代码过长和混乱。
if (yourValue in wrap(a,b,c,d,e,f,g))
$.inArray(yourValue, [a,b,c,d,e,f])
var values = [b,c,d,e,f];

for (var i=0,n=values.length; i<n; i++){
   if (values[i] == a){
       // ...
       break;
   }
}