寻找重新设计此和/或陈述的明智方法

时间:2019-02-19 16:15:03

标签: javascript

我需要重写条件的最后一部分。我既需要和/或同时需要。

if ((params.path === 'ABC' || params.path === 'EFG') && 
(params.noPath && params.fClick))

就像params.noPath && ||在这里,我只需要一个或两个条件即可成立。请帮忙。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用javascript模拟XOR(XOR是combinai):

(params.noPath && !params.fClick) || ( !params.noPath && params.fClick)

Reference

使用三元的更小方法:

if ( params.noPath ? !params.fClick : params.fClick )

  

XOR操作可以描述为“如果两个布尔操作数不具有相同的值,则返回true”

因此,适用于任何数据类型(包括表达式)的XOR运算符的最简单,最简洁的版本是:

if ( !params.noPath != !params.fClick )

答案 1 :(得分:1)

我很确定您只需要将&&换成||

if ((params.path === 'ABC' || params.path === 'EFG') && (params.noPath || params.fClick))

因为逻辑上“一个或两个”与其中至少一个为真相同。

如果path为ABC或EFG且noPath为true,则以上内容将返回true。

如果path为ABC或EFG且fClick为true,则以上内容将返回true。

如果path为ABC或EFG且noPath和fClick为true,则以上内容将返回true。

否则它将返回false