Javascript 如何用1常数构成3的三元数

Javascript 如何用1常数构成3的三元数,javascript,conditional-statements,ternary-operator,Javascript,Conditional Statements,Ternary Operator,编辑到完整场景:我有两个组件和四个按钮!三个按钮的默认值为null。假设a,b,c,d是不同的四个按钮 在第一个组件中,按钮a和b默认为null,因此按钮d将被禁用 当用户按下a和b时,将为a和b分配一个值,因此在a和b分配后,应启用d 在第二个组件中,按钮a和c的默认值为null,当它们都在按下时获得值,按钮d将再次启用 请注意,组件是有条件渲染的,因此用户只能看到一个组件 这是我的密码: <Button disabled={(this.state.quantityIte

编辑到完整场景:我有两个组件和四个按钮!三个按钮的默认值为
null
。假设abcd是不同的四个按钮

  • 在第一个组件中,按钮ab默认为
    null
    ,因此按钮d将被禁用
  • 当用户按下ab时,将为ab分配一个值,因此在ab分配后,应启用d

  • 在第二个组件中,按钮ac的默认值为
    null
    ,当它们都在按下时获得值
    ,按钮d将再次启用

请注意,组件是有条件渲染的,因此用户只能看到一个组件

这是我的密码:

 <Button
     disabled={(this.state.quantityItemSelected === null || 
     this.state.deliveryOptionSelected === null) && 
     (this.state.timeSlotItemSelected === null) ? true : false} 
 />

默认常量为
this.state.quantityItemSelected===null
,两者相同

它在
()
中的条件下可以正常工作,但大约在第一个条件下,当
this.state.quantityItemSelected
首先变为非
null
,然后
this.state.timeSlotItemSelected
变为非
null
时,它可以正常工作

但是当我将其反转时,当
this.state.timeSlotItemSelected
一开始变为非空时,条件变为false

我期望的工作是,当任何事物都是带有常量的
null
时,它应该是真的

请帮助我,一定要让我知道还有什么需要了解的

例如,当a=null和b=null时,如果我有a,b,c,那么它应该是真的,当a=null和c=null时,它应该是真的,其余条件为假

您需要将后两个条件括起来,并对它们使用
|

 <Button
   disabled={(
     (this.state.quantityItemSelected === null) &&
     (this.state.deliveryOptionSelected === null || this.state.timeSlotItemSelected === null)
   ) ? true : false} 
 />

例如,当a=null和b=null时,如果我有a,b,c,那么它应该是真的,当a=null和c=null时,它应该是真的,其余条件为假

你(用伪逻辑表示法)的意思是
(!a&&!b&&c)|(!a&&b&&c)
,扩展后的意思是

函数计算条件(a、b、c){
返回(a==null&&b==null&&c!==null)| |(a==null&&b!==null&&c==null);
}
//T-正确,F-错误。缩短以保留格式
常数表=[
[“FFF”,计算条件(空,空,空)],
[“FFT”,计算条件(空、空、非空”),
[“FTF”,计算条件(空,“非空”,空)],
[“FTT”,计算条件(空,“非空”,“非空”)],
[“TFF”,计算条件(“非空”,空,空)],
[“TFT”,计算条件(“非空”,空,“非空”)],
[“TTF”,计算条件(“非空”,“非空”,空)],
[“TTT”,计算条件(“非空”、“非空”、“非空”)],
]
for(表的常量[键,值]){
console.log(键、值)

}
假设“this.state.quantityItemSelected”为“a”,“this.state.DeliveryOptions Selected”为“b”,而“this.state.TimeLotitItemSelected”为“c”,则条件应为:

this.state.quantityItemSelected === null && 
(this.state.deliveryOptionSelected === null ||
this.state.timeSlotItemSelected === null) ? true : false
或者用a,b和c

a === null && (b === null || c === null)  ? true : false
如果伪值(如零、空字符串等)不是a、b和c的有效值,您可以通过执行以下操作来改进代码:

disable = !a && (!b || !c)
回答编辑的问题

在第一个组件中,按钮a和b默认为空,因此按钮d将被禁用。 当用户按下a&b键时,将为a&b分配一个值,因此在分配a&b后,应启用d

这是一个与前一个不同的场景

disableButtonD = a === null && b === null;  
或者更好

disableButtonD = !(a && b);  
disableButtonD = !(a && C);  
以及:

在第二个组件中,按钮a和c的默认值为null,当它们都在按下时获得值时,按钮d将再次启用

或者更好

disableButtonD = !(a && b);  
disableButtonD = !(a && C);  
根据您的限制条件,不能对两种情况都使用一句话。 当然,根据您使用的框架,您可能有一个函数

角度示例:

组成部分:

disableD(firstValue, secondValue) {
  return !(firstValue && secondValue)
} 
HTML


如果我有a,b,c,当a=null和b=null时,那么 应该为true,当a=null和c=null时应该为true,rest 条件错误

试试下面的,它会工作的!你可以用这个

(this.state.quantityItemSelected === null || this.state.deliveryOptionSelected === 
 null) && (this.state.timeSlotItemSelected === null || this.state.quantityItemSelected 
=== null) ? true : false

一定要让我知道,如果它的工作

如果值为假,是否总是
null
?这太令人困惑了。但不需要使用三元运算符。只需使用
&&
|
即可满足条件。不,实际上,当用户按下相应的键时,这些值将变为某些值!所以,有一个常数对两者都是相同的,所以当这个常数和其他条件为null时,它必须为真,当两者都变为非null时,它应该为假!你能举个例子吗?事实上,它也不起作用!现在,如果quantityItemSelected或timeSlotItemSelected中的任何一个不是空值,那么它就变成了真!你知道这个问题吗?你知道这个问题吗?你知道这个问题吗?