首页 > 解决方案 > 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 ...

这样做的正确方法是什么?

标签: javascript

解决方案


您可以使用数组 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 将触发,如果任何值是它们应该是的,第二个将触发。


推荐阅读