JavaScript多条件判断实现指定返回结果的简洁写法是什么?
最优实现方案
你补充说明后的判断逻辑本质是只有stats?.[itemDate]大于0且listings长度大于0两个条件同时满足时才返回true,其余所有场景都返回false,你最初写的写法就完全符合需求,无需额外修改:
stats?.[itemDate] > 0 && listings.length > 0
逻辑覆盖验证
我们可以对应你列的三种场景逐一验证:
stats?.[itemDate] > 0且listings.length > 0:表达式返回true,符合要求stats?.[itemDate] > 0且listings.length == 0:listings.length > 0不成立,整体返回false,符合要求stats?.[itemDate] == 0且listings.length == 0:stats?.[itemDate] > 0不成立,整体返回false,符合要求
除此之外,可选链语法也自动覆盖了stats未定义、stats[itemDate]不存在的边界场景,这些场景下表达式都会返回false,符合预期。
严谨性优化(可选)
如果业务场景中stats?.[itemDate]可能返回字符串类型的数字(比如"2"),可以加一层数字转换避免类型隐式转换导致的判断异常:
Number(stats?.[itemDate]) > 0 && listings.length > 0
这个写法已经是最简洁的内联实现,没有冗余逻辑,可以直接在JSX或其他需要内联判断的场景使用。
内容的提问来源于stack exchange,提问作者rbq10
相关产品推荐
相关产品推荐

