我需要评估一个变量并检查它是否等于其他两个变量之一。
我这样做:
if (a == b || a == c)
{
}
我觉得必须有一种更好的方法来以这种方式评估变量。在那儿?
我需要评估一个变量并检查它是否等于其他两个变量之一。
我这样做:
if (a == b || a == c)
{
}
我觉得必须有一种更好的方法来以这种方式评估变量。在那儿?
如果您只是将一个值与其他 2 个值进行比较,这是最有效和最优雅的解决方案。无需改变任何东西!
如果您想查看一个变量是否等于更大的其他变量集合中的任何一个,您可以执行以下操作:
if(([b,c,d,e,f].indexOf(a) !== -1) {
// "a" is equal to either b, c, d, e, or f
}
该indexOf
方法在旧版浏览器中可能不可用,因此请务必检查一下!在旧版浏览器中,您可以使用编写自己的方法来搜索数组或利用任何流行的通用库......大多数都会有这个功能。
您也可以使用Array.prototype.includes
(ES7)。
if ([b, c, d, e].includes(a)) {
// do stuff
}
..如果你有很多变量要比较,你可能会使用这个:
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])
我认为您上面的内容是最直接的选择。
此外,在 JavaScript 中有不同种类的相等运算符。如果两个操作数相等,==
则等于运算符返回布尔值 true。JavaScript 将尝试将不同的数据类型转换为相同的类型以进行比较。该===
运算符是严格相等运算符,仅当两个操作数相等且类型相同时才返回布尔值 true。
var values = [b,c,d,e,f];
for (var i=0,n=values.length; i<n; i++){
if (values[i] == a){
// ...
break;
}
}