【问题标题】:How can I refactor my code having multiple if conditions? [closed]如何重构具有多个 if 条件的代码? [关闭]
【发布时间】:2021-03-20 15:06:49
【问题描述】:

如何简化具有多个 if 条件的代码。

    var displayOption;
    if (category === "new" && URIParams.displayOptions) {
        if (URIParams.displayOptions === "showStartingPrice") {
            displayOption = "showStartingPrice";
        } else {
            displayOption = URIParams.displayOptions.split(",")[1];
        }
    }
    if (displayOption && Static.displayOptions[displayOption] === "displayStartingPrice" && model.minPrice && model.minPrice[0]) {
        model.minimumPrice = `Starting at $${model.minPrice[0].value}`;
        model.price = true;
    }

【问题讨论】:

  • 您能否详细说明您想要实现的目标以及您尝试了什么?
  • 我写了上面的代码,现在我想摆脱多个if条件。
  • 你为什么要摆脱他们,也许他们可以在那里?只是为了有更短的代码,并不意味着它“更好”:)
  • 摆脱多重检查的唯一(?)通用方法是将数据存储/转换为字节码,并对数据执行一些位逻辑。这样你就只需要一张支票。

标签: javascript jquery arrays if-statement ecmascript-6


【解决方案1】:

试试这样:

NavigationInventory.handleStartingPrice = function (URIParams, model, category) {
    var displayOption;

    if (category === "new" && URIParams.displayOptions) {
        displayOption = (URIParams.displayOptions === "showStartingPrice" ? "showStartingPrice" : URIParams.displayOptions.split(",")[1]);

        if (displayOption && Static.displayOptions[displayOption] === "displayStartingPrice" && model.minPrice && model.minPrice[0]) {
             model.minimumPrice = `Starting at $${model.minPrice[0].value}`;
             model.price = true;
        }
    }
}
  1. 通过使用ternary operator,可以删除用于设置displayOption 的嵌套if 语句
  2. 最后一个if 语句可以嵌套在第一个语句中,因为如果第一个条件不满足,那么displayOption 在任何情况下都会计算为false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    相关资源
    最近更新 更多