【问题标题】:Is there an easier way to combine several if statements using an array in javascript有没有一种更简单的方法可以在 javascript 中使用数组来组合多个 if 语句
【发布时间】:2021-10-31 16:14:31
【问题描述】:

我有一个用户输入地址的表单。然后,它会根据英国的几个目的地检查他们的地址,看看哪个城市离他们最近。

我希望每个目的地都有不同的价格,例如英国伦敦 = 50,英国伯明翰 = 200 等。

我写了一个非常基本的 if 语句,它检查返回的城市并计算价格。但是,我想知道是否有一个更简洁的解决方案,因为它感觉有点迟钝:

if(closestCities[0].cityName == "Coventry, UK") {
  travelExpenses = 10;
} else if (closestCities[0].cityName == "London, UK"){
  travelExpenses = 50;
} else if (closestCities[0].cityName == "Margate, UK"){
  travelExpenses = 100;
} else if (closestCities[0].cityName == "Bristol, UK"){
  travelExpenses = 20;
} else if (closestCities[0].cityName == "Tamworth, UK"){
  travelExpenses = 15;
} else if (closestCities[0].cityName == "Birmingham, UK"){
  travelExpenses = 200;
} else {
  travelExpenses = 30;
}

【问题讨论】:

  • switch case怎么样?
  • codereview.stackexchange.com

标签: javascript arrays if-statement


【解决方案1】:

你为什么不创建一个对象:

let map = {
 "Margate, UK": 100,
 "Bristol, UK": 20 // etc.
}

您似乎还想要一个默认值。我认为在您的情况下,您可以使用 nullish 合并运算符

nullish 合并运算符 (??) 是一个逻辑运算符 当其左侧操作数为时,返回其右侧操作数 null 或未定义,否则返回其左侧操作数

travelExpenses = map[closestCities[0].cityName] ?? 30;

【讨论】:

  • 这正是我想要的!谢谢
【解决方案2】:

您还可以为您的开支定义一个字典

let expenses = {
  "Coventry, UK": 10, 
  "London, UK": 20,
  ...

}

let travelExpenses = expenses[closestCities[0].cityName] || 30;

如果你有任何城市,有费用0,你必须这样做

let travelExpenses = expenses[closestCities[0].cityName];
if (travelExpenses === undefined) travelExpenses = 30;

【讨论】:

    【解决方案3】:

    您可以尝试destructuring 对象和switch 语句以使其具有高度可读性。

    const { cityName } = closestCities[0]
    switch (cityName) {
        case "Coventry, UK":   travelExpenses = 10;
                                break;
        case "London, UK": travelExpenses = 20
                            break;
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多