3

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

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

我觉得必须有一种更好的方法来以这种方式评估变量。在那儿?

4

5 回答 5

4

如果您只是将一个值与其他 2 个值进行比较,这是最有效和最优雅的解决方案。无需改变任何东西!

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

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

indexOf方法在旧版浏览器中可能不可用,因此请务必检查一下!在旧版浏览器中,您可以使用编写自己的方法来搜索数组或利用任何流行的通用库......大多数都会有这个功能。

于 2012-07-04T17:21:22.140 回答
3

您也可以使用Array.prototype.includes(ES7)。

if ([b, c, d, e].includes(a)) {
  // do stuff
}

于 2019-11-02T08:26:59.547 回答
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 的方式

$.inArray(yourValue, [a,b,c,d,e,f])
于 2012-07-04T17:24:59.897 回答
0

我认为您上面的内容是最直接的选择。

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

于 2012-07-04T17:24:07.380 回答
0
var values = [b,c,d,e,f];

for (var i=0,n=values.length; i<n; i++){
   if (values[i] == a){
       // ...
       break;
   }
}
于 2012-07-04T17:27:12.983 回答