我知道要声明多个变量,有一个快捷方式,例如var x=1,y=2,z=3
.
现在,如果我有一个if
测试 ONE 变量的语句,但对于许多值,例如:
if (x==1 || x==15 || x==25 || x==150){
}
由于x
在现实生活中的例子会更长,我想找到一个快捷方式来枚举所有这些值,一个接一个,而不是每次都写变量的名称)
我该怎么做?
我知道要声明多个变量,有一个快捷方式,例如var x=1,y=2,z=3
.
现在,如果我有一个if
测试 ONE 变量的语句,但对于许多值,例如:
if (x==1 || x==15 || x==25 || x==150){
}
由于x
在现实生活中的例子会更长,我想找到一个快捷方式来枚举所有这些值,一个接一个,而不是每次都写变量的名称)
我该怎么做?
您可以使用可能值的数组并测试以查看变量是否出现在其中。
if ([1, 15, 25, 150].indexOf(x) > -1) {
IE8 及更早版本不支持此功能。请参阅MDN 文档,其中包含针对旧浏览器的解决方法。
您是否考虑过 case-switch 语句?不是很花哨,但未被充分利用且易于阅读,并且可以移植到大多数其他编程语言:
switch (x) {
case 1:
case 15:
case 25:
case 150:
// do something
break;
}
如果您担心性能,我运行了一个jsPerf 测试用例,这种技术在 Chrome 中是最快的。
您可以使用 inArray 并执行此操作(跨浏览器兼容)
if(jQuery.inArray(x,[1,15,125,150]) > -1)
{
}
如果您有很多项目要检查,那么地图(使用 JavaScript 对象)可以很整洁并且适用于所有浏览器:
var items = {1:true, 15:true, 25:true, 150:true};
if (items[x] === true) {
// Found x in items
}
对于大量的项目,映射是一种比线性搜索数组的其他示例更有效的查找机制。
我还发现它的代码维护起来比多行if
语句要简单得多。
UnderscoreJS有一个 .any 函数:
var testArray = [1,15,125,150];
if (_.any(testArray, function (item) { return item === x; })) {
// do stuff
}
该库具有许多处理数组的强大功能。