javascript - if语句javascript中的多个条件
问题描述
我需要按多个字段 [下拉列表] 进行过滤,但字段也可能为空。我能想到的唯一方法是下面显示的方法,但我正在寻找一种不那么臃肿的方法,而不必制作 20if
左右
a could have values 1 or 2
b could have values 3 or 4 or 5 or 6
c could have values 7 or 8 or 9
d could have values 10 or 11 or 20
if( a !== '' || b !== '' || c !== '' || d !== ''){
if((a == 1 || a == 2) && (b == 3 || b == 4 || b == 5 || b == 6) && (c == 7 || c == 8 || c == 9) && (d == 10 || d == 11 || d == 12)){
// more code here where i use the values of a/b/c/d to get data from an object
}
}
// a empty
else if( b !== '' || c !== '' || d !== ''){
if((b == 3 || b == 4 || b == 5 || b == 6) && (c == 7 || c == 8 || c == 9) && (d == 10 || d == 11 || d == 12)){
// more code here
}
}
// b empty
else if( a !== '' || c !== '' || d !== ''){
if((a == 1 || a == 2) && (c == 7 || c == 8 || c == 9) && (d == 10 || d == 11 || d == 12)){
// more code here
}
}
// a and b empty
else if( c !== '' || d !== ''){
if((c == 7 || c == 8 || c == 9) && (d == 10 || d == 11 || d == 12)){
// more code here
}
}
and so on ...
这样做的正确方法是什么?
解决方案
您可以使用数组 includes() 方法:
var aS = [1,2];
var bS = [3,4,5,6];
var cS = [7,8,9];
var dS = [10,11,20];
if (a || b || c || d) {
if (aS.includes(a) || bS.includes(b) || cS.includes(c) || dS.includes(d)) {
//do stuff here
}
}
如果一个或多个不为空,第一个 if 将触发,如果任何值是它们应该是的,第二个将触发。
推荐阅读
- javascript - 新的 Date() 不起作用 在 chrome 中不起作用
- python - Pandas groupby.diff() 未返回预期输出
- java - Eclipse 以奇怪的设置/奇怪的屏幕/或未对齐运行 javafx 程序
- node.js - 如何在 pg-promise 中正确编写具有空约束的查询?
- javascript - Vue 中实时监听器的 Firestore 更新
- mysql - 在 MySQL 中添加第三个表的 WHERE 子句,其 ID 存在于前两个内连接表中
- java - ClassCastException While Create an org.apache.poi.poifs.crypt.EncryptionInfo Instance (Apache POI)
- c# - 包括 ASP.net Identity LoginPartial In Menu - 用户未登录
- django - Django中的get_queryset vs manager
- excel - 如何创建将单个选项卡excel转换为字段包含分号的csv文件的vb脚本