Javascript 有没有一种更快、更简单的方法来编写多个带有多个AND条件的if语句?
是否有一种简单的方法可以满足所有可能的组合,而不必手动编写所有这些if语句Javascript 有没有一种更快、更简单的方法来编写多个带有多个AND条件的if语句?,javascript,loops,if-statement,conditional-statements,Javascript,Loops,If Statement,Conditional Statements,是否有一种简单的方法可以满足所有可能的组合,而不必手动编写所有这些if语句 var ups; var trans; var sat; var kplc; if(ups === 'false' && trans ==='true'&& sat ==='true' && kplc ==='true'){ //do something } if(ups === 'true' && trans ==='true
var ups;
var trans;
var sat;
var kplc;
if(ups === 'false' && trans ==='true'&& sat ==='true' && kplc ==='true'){
//do something
}
if(ups === 'true' && trans ==='true'&& sat ==='true' && kplc ==='true'){
//do something
}
if(ups === 'false' && trans ==='false'&& sat ==='true' && kplc ==='true'){
//do something
}
if(ups === 'false' && trans ==='true'&& sat ==='false' && kplc ==='true'){
//do something
}
////and so forth and so forth....
如果需要检查所有值是否通过相同的谓词,可以将所有值放入一个数组并使用array.prototype.every
let foo = true
let bar = true
let baz = false
if ([foo, bar, baz].every(value => value === true)) {
console.log('condition passed')
}
同样,要检查它们中是否至少有一个通过谓词,请使用Array.prototype.some
let foo = true
let bar = true
let baz = false
if ([foo, bar, baz].some(value => value === true)) {
console.log('condition passed')
}
我只看到一个
if
语句。。?你是说每个组合都有一个?为什么是这些字符串?答案取决于要求。如果你的四个布尔值的每一个组合都会发生不同的事件,那么你需要所有的分支。但是,如果要采取的操作可以以某种方式分组,那么答案将不同。为了减少代码,我将首先将其转换为布尔值,然后只说If(!ups&&trans&&sat&&kplc)
。如果您需要它们作为字符串,那么我看不到比创建一些函数来提高代码可读性更好的选择。同样也不是很好。我们不能在这里告诉您答案,尽管根据您提供的内容,这是编程的关键,能够通过您编写的代码找到所需的最少路径数。如果到目前为止您发布了10个,我们可能可以指导您。这是一个有趣的解决方案,让我试试。有没有办法打印出同样正确的变量?findIndex
。但老实说,foo&&bar&&baz
或foo+bar+baz>1
更短,更容易理解。这只会检查foo、bar和baz是否都是真的,或者至少其中一个是真的。这仅仅是两个结果。我相信这个问题是在寻找一个答案,告诉我们哪些变量是正确的。