有没有一种方法可以通过Javascript解构来压缩多个条件语句?
我正在构建一个简单的React应用程序,让用户提供三种类型的反馈(好、中性和坏)。如果还不存在任何类型的反馈,它将呈现“no feedback given”消息,并且一旦给出任何类型的反馈,它将显示该反馈的统计信息 我已经用下面所示的现有条件实现了这一点,但我想知道是否可以压缩三个“或”语句,也许可以通过一种解构技术 为清晰起见进行编辑:反馈值的数据存储在父组件中的三个独立状态中有没有一种方法可以通过Javascript解构来压缩多个条件语句?,javascript,reactjs,ecmascript-6,conditional-statements,Javascript,Reactjs,Ecmascript 6,Conditional Statements,我正在构建一个简单的React应用程序,让用户提供三种类型的反馈(好、中性和坏)。如果还不存在任何类型的反馈,它将呈现“no feedback given”消息,并且一旦给出任何类型的反馈,它将显示该反馈的统计信息 我已经用下面所示的现有条件实现了这一点,但我想知道是否可以压缩三个“或”语句,也许可以通过一种解构技术 为清晰起见进行编辑:反馈值的数据存储在父组件中的三个独立状态中 return ( <> <h1>Statistics</h1>
return (
<>
<h1>Statistics</h1>
{(good > 0 || (neutral > 0) || bad > 0)?
<p>{feedback}</p> :
<p>No feedback given</p>}
</>
);
返回(
统计
{(好>0 | | |(中性>0)| |坏>0)?
{反馈}:
没有给出反馈}
);
如果用户有反馈,为什么不做一个简单的字符串比较呢?如果用户没有反馈,为什么不将反馈设置为无反馈呢
return (
<>
<h1>Statistics</h1>
{feedback != "NO_FEEDBACK"
?<p>{feedback}</p>
:<p>No feedback given</p>}
</>
);
返回(
统计
{反馈!=“没有反馈”
?{feedback}
:没有给出反馈
);
我已经用下面显示的现有条件实现了这一点,但我想知道是否可以压缩三个“or”语句
不,不是真的。它们只有三个,而且你没有它们的列表,所以没有什么可以获得的。您当前的代码已经相当简洁-您所能做的就是省略多余的括号:
<>
<h1>Statistics</h1>
{ good > 0 || neutral > 0 || bad > 0 ?
<p>{feedback}</p> :
<p>No feedback given</p>}
</>
如果我理解你的问题,你可以将它们添加到一个数组中,并使用
.any
检查它们中是否有>0
例如[好的,中性的,坏的]。any(feedback=>feedback>0)
应该返回true
或false
你提到的解构;您有具有这些属性的对象吗?如果是这样的话,把它添加到问题中,这与你的数据有很大关系。存储在何处以及如何存储?您能否以不同的方式存储它,以便能够更有效地执行类似的操作?基于你所分享的,我真的很喜欢你所拥有的。我非常喜欢人性化的代码,而你的代码读起来非常有趣nicely@George,也许你的意思是Array.prototype.some()
()?如果你真的想要,你可以在不创建不必要的数组或对象的情况下缩短它:{((好的| | |中性的| | | |坏的)&{feedback})|没有反馈
<>
<h1>Statistics</h1>
{ good || neutral || bad ?
<p>{feedback}</p> :
<p>No feedback given</p>}
</>