我正在为预订流程构建应用。我有一堆可选选项,其值保存,用户将移动到该过程的下一步。选项编号为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
=已保存选项。 val_c
=新选择的选项。
有人能说出我可能做错了吗?
编辑好的,也许我不够清楚。如果用户从第一组中选择任何选项(0-4),则返回并从同一组中选择任何选项,0-4,然后我不在乎。但是如果在这种情况下他们选择5或6(在第二组中),那么我想评估为真(即触发函数)。 相反如果他们第一次选择5或6,那么回去再选择5或6,我不在乎,但如果在这种情况下,他们选择了0,1,2,3或4,然后我想触发这个功能。
我不知道如何更清楚地解释它......!
答案 0 :(得分:0)
您可以通过多种方式处理此问题。鉴于0..4
是一个组而5,6
是另一个组,最简单的解决方案如下:
if((c_sav <= 4 && val_c > 4) || (c_sav > 4 && val_c <= 4)) {
// Do something
}
这可能就是您所需要的全部内容,但如果您的群组边界发生变化(或某些方式选择了某些方式),它就不会非常强大或易于维护。一个更好的选择可能是这样的:
var groups = [ 1, 1, 1, 1, 1, 2, 2];
所以你可以这样做:
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
中的任何内容都是具有group
属性的对象。然后你只是比较它们:
if (c_sav.group !== val_c.group) {
// Do something
}