在JavaScript / jQuery中,是否有一种更短的方法可以编写在同一个测试变量上具有许多OR的“if”语句
In JavaScript/jQuery, is there a shorter way of writing an 'if' statement with many OR's on the same tested variable?
我知道要声明多个变量,有一个快捷方式,例如var x=1,y=2,z=3
。
现在,如果我有一个if
语句,我在其中测试一个变量,但对于许多值,如下所示:
if (x==1 || x==15 || x==25 || x==150){
}
由于x
在现实生活中的示例中会更长,因此我想找到一个快捷方式来枚举所有这些值,一个接一个,而不是每次都写变量的名称)
我该怎么做?
您可以使用 inArray 并执行此操作(跨浏览器兼容)
if(jQuery.inArray(x,[1,15,125,150]) > -1)
{
}
您可以使用可能值的数组并测试变量是否出现在其中。
if ([1, 15, 25, 150].indexOf(x) > -1) {
不过,IE8 及更早版本不支持此功能。请参阅 MDN 文档,其中包括旧浏览器的解决方法。
您是否考虑过大小写切换语句?不是很花哨,但未被充分利用且易于阅读,并且可以移植到大多数其他编程语言:
switch (x) {
case 1:
case 15:
case 25:
case 150:
// do something
break;
}
如果你担心性能,我运行了一个jsPerf测试用例,这种技术是Chrome中最快的。
如果你有很多项目要检查,那么地图(使用 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
}
该库具有许多用于处理数组的强大功能。
相关文章:
- 使用JS/NodeJS测试并读取文件中的变量
- 如何测试变量是否只有字母而不是abc1.关于验证电子邮件
- 使用Jquery在页面加载上测试php会话变量
- Javascript 测试是否设置了变量
- 测试JavaScript是否符合异常变量名
- 测试两个变量是否包含一些数据 JavaScript
- 在JavaScript / jQuery中,是否有一种更短的方法可以编写在同一个测试变量上具有许多OR的“if”语句
- javascript测试用于设置cookie的变量
- 单元测试节点模块与mocha,模块变量行为怪异
- 测试变量存在性的Javascript多重赋值:var obj=obj||{}
- 如何测试变量是否为Moment.js对象
- 测试变量是否为数组的最佳方法
- 有没有什么干净的方法可以对一组||测试进行编码,看看变量的值是否在其中一个测试中
- 因果报应测试中未定义的预期范围变量
- Javascript:分配一个变量并同时对其进行测试
- 如何在Javascript中添加所有测试使用的全局变量
- 在javascript中测试变量是否为null,而不会导致未定义的错误
- 如何在mocha测试中模拟全局变量(define、module、window)
- jQuery,如何测试一个变量是一个文本节点,不包含任何标记
- 在前端测试 react + redux 应用程序时忽略与浏览器相关的变量