Javascript if-else语句基于过滤器执行代码

Javascript if-else语句基于过滤器执行代码,javascript,Javascript,我有下面的长if-else语句,其中我检查布尔值true,然后检查console.log,问题是当有两个或更多值时,代码不会执行,它会在第一个if语句为true时停止,然后跳过其余的,我如何让它检查所有三个过滤器是否为真或两个过滤器是否为真,然后首先执行该块,然后转到下一个if块,将其按最大过滤器的顺序重写到最小是唯一的解决方案 var saltyFilter=true var sourFilter=true var spicyFilter=true if(盐过滤器){ 原木(“咸”); }e

我有下面的长if-else语句,其中我检查布尔值true,然后检查console.log,问题是当有两个或更多值时,代码不会执行,它会在第一个if语句为true时停止,然后跳过其余的,我如何让它检查所有三个过滤器是否为真或两个过滤器是否为真,然后首先执行该块,然后转到下一个if块,将其按最大过滤器的顺序重写到最小是唯一的解决方案

var saltyFilter=true
var sourFilter=true
var spicyFilter=true
if(盐过滤器){
原木(“咸”);
}else if(spicyFilter){
控制台日志(“辣”);
}else if(酸过滤器){
控制台日志(“sour”);
}else if(盐碱过滤器和spicyFilter){
console.log(“咸和辣”);
}else if(盐过滤器和酸过滤器){
控制台日志(“咸和酸”);
}else if(spicyFilter和sourFilter){
控制台日志(“辛辣和酸味”);
}else if(盐滤器和酸滤器和酸滤器){
原木(“咸、辣、酸”);
}否则{
console.log(“未知味道”);

}
只需颠倒顺序,如果saltyFilter为true,则它将始终位于第一个代码块内。只需将顺序颠倒为如下所示:

if (saltyFilter && spicyFilter && sourFilter) {
  console.log("salty, spicy & sour");
} else if (saltyFilter && sourFilter) {
  console.log("salty & sour");
}  else if (spicyFilter && sourFilter) {
  console.log("spicy & sour");
} else if (saltyFilter && spicyFilter) {
  console.log("salty & spicy");
} else if (saltyFilter) {
  console.log("salty");
} else if (spicyFilter) {
  console.log("spicy");
} else if (sourFilter) {
  console.log("sour");
} else {
  console.log("unknown flavor");
}
如果您不了解简单的javascript,请遵循w3Schools,它简单明了:

您可以根据需要使用flas函数并返回联合数组或未知数组

函数getFlavors(…标志){ 常量口味=[‘咸’、‘酸’、‘辣’]。过滤器(((u,i)=>标志[i]); 返回长度 好(口味) :“未知味道” } 函数nice([…数组]){ 返回array.concat(array.splice(-2,2).join('&').join(','); } log(getFlavors(true,true,true)); log(getFlavors(true、false、true));
log(getFlavors())颠倒顺序?首先检查所有三种情况,然后是双组合,然后是单组合。或者,更好的方法是创建一个数组,只检查每个过滤器一次,然后将相关的字符串值放入数组中,然后将数组连接成一个字符串。第一个条件返回true,这就是为什么其他条件不可用的原因executed@nina,谢谢你,这对我来说是一种进步,但谢谢你,真的让我意识到我需要做多少学习,我会把它分解,看看是否可以重复使用:)