Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:在单个“if”语句中包含多个条件,比较多组值_Javascript_If Statement - Fatal编程技术网

Javascript:在单个“if”语句中包含多个条件,比较多组值

Javascript:在单个“if”语句中包含多个条件,比较多组值,javascript,if-statement,Javascript,If Statement,我正在为预订流程构建一个应用程序。我有一系列可选择的选项,这些选项的值被保存,用户被移动到流程的下一步。选项编号为0-6。0-4可以被视为一个“组”,而选项5和6是一个单独的“组”。现在,我需要做的是,如果用户改变主意,返回并选择属于不同组的新选项,那么它将触发一些功能。见下图: 0 } 1 } 2 } --- 0 -4 is the first 'group' 3 } 4 } 5 } --- 5 & 6 can be thought as a different 'group' 6

我正在为预订流程构建一个应用程序。我有一系列可选择的选项,这些选项的值被保存,用户被移动到流程的下一步。选项编号为0-6。0-4可以被视为一个“组”,而选项5和6是一个单独的“组”。现在,我需要做的是,如果用户改变主意,返回并选择属于不同组的新选项,那么它将触发一些功能。见下图:

0 }
1 }
2 } --- 0 -4 is the first 'group'
3 }
4 }

5 } --- 5 & 6 can be thought as a different 'group'
6 }
我试图用if语句复制这个逻辑。我有以下代码,但似乎不起作用:

                if((((c_sav === 4 || c_sav === 5) && (val_c !== 4 && val_c !== 5)) 
                   || ((c_sav !== 4 && c_sav !== 5) && (val_c === 4 || val_c === 5)))){
                    // Some logic...
                }
变量名只是用户第一次选择时的c_sav=Saved选项。val_c=新选择的选项

有人能告诉我可能做错了什么吗

编辑好,也许我不够清楚。如果用户从第一组0-4中选择任何选项,然后返回并从同一组0-4中选择任何选项,那么我不在乎。但如果在这种情况下,他们选择第二组中的5或6,那么我想计算为true,即触发函数。相反,如果他们在第一轮选择5或6,然后返回并选择5或6,同样,我不在乎,但如果在这种情况下,他们选择0,1,2,3或4,那么我想触发函数


我不知道该怎么解释清楚

您可以通过多种方式处理此问题。假设0..4是一个组,5,6是另一个组,最简单的解决方案如下:

if((c_sav <= 4 && val_c > 4) || (c_sav > 4 && val_c <= 4)) {
    // Do something
} 
所以你可以这样做:

if (groups[c_sav] !== groups[val_c]) {
   // Do something
}
或者您可以使用一个对象,这会给您带来更多的灵活性:

var groups = { 0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 2, 6: 2 };
也可以用同样的方法。但是,如果选项是数字的,则对象会使操作变得更简单,您可以使用字符串键,或者不连续

最好的选择是,如果您在c_sav和val_c中拥有的东西是一个具有组属性的对象。然后你只需比较它们:

if (c_sav.group !== val_c.group) {
    // Do something
}

如果c_sav!==val_c?c|sav==4 | c|u sav==5和c|sav!==4&&c_sav!==5一起。最好不要检查这些值。@Inigo根据您上面的解释,它们属于不同的组。只要看一下代码,我一般都会建议这样做-可能有更好的方法来做。也许在某个地方存储每个选项与哪个组关联,然后直接检查该组?如果您试图做的事情看起来不合理地复杂,通常是这样。啊,数组方法太棒了!肯定是要走的路,谢谢!
if (c_sav.group !== val_c.group) {
    // Do something
}