【问题标题】:More elegant ways of converting YES/NO to true/false将 YES/NO 转换为 true/false 的更优雅的方法
【发布时间】:2019-04-26 11:34:53
【问题描述】:

可能缺少一些非常基本的东西。请告诉我 如果有更好的方法来做到这一点,它比在 javascript 中使用三元运算符更优雅。

if (data.isYellowCupcake === YES) {
  dataCopy.isCupcake = true;
} else if (data.isYellowCupcake === NO) {
  dataCopy.isCupcake = false;
}

【问题讨论】:

  • 三元运算符对于这个解决方案来说似乎非常简短和优雅,除非你除了YES == true之外还有更多案例,否则false
  • YESNO 变量的值是多少?
  • 我猜三元会很优雅。真正的问题是为什么这些数据格式不正确? isYellowCupcake 应该是一个布尔值。甚至更好的是, data.color = 'yellow' 甚至会是首选,这样您就不需要为每个现有的纸杯蛋糕颜色设置一个属性。
  • @Cray 是的,如果只有 isYellowCupkake 具有“是”或“否”,则应该设置比 isCupkake 更多的情况。如果未设置 data.isYellowCupkake 值,则不应设置。
  • 您可以在三元运算符中使用more than 2 选项。我在下面发布了示例。

标签: javascript if-statement ternary-operator


【解决方案1】:

怎么样:

dataCopy.isCupkake = data.isYellowCupkake === YES;

顺便说一句,cupcake 这个词只有一个k

【讨论】:

  • 效果很好,但如果只有isYellowCupkake 具有YESNO,则应该设置isCupkake。如果未设置 data.isYellowCupkake 值,则不应设置它。
  • @codeMan 在这种情况下if..else 声明是要走的路。不要尝试压缩开发代码,压缩器会在您压缩生产代码时为您完成。
  • @codeMan:在这种情况下,我认为将属性称为YellowCupkake 是不好的措辞。 is-前缀仅意味着两种状态。如果没有更大的问题背景,也很难建议一个好的解决方案。
【解决方案2】:

即使你说你不想要三元运算符,我还是把它留在这里。

   dataCopy.isCupcake = data.isYellowCupcake === 'YES' ? true 
    : data.isYellowCupcake === 'NO' ? false 
    : null;

【讨论】:

    猜你喜欢
    • 2013-09-09
    • 2011-01-31
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多