压缩多个IF语句

时间:2019-09-11 05:49:16

标签: javascript google-apps-script

我有大约40个不同的参数,我必须检查它是否在一个范围内。范围都是不同的值。下面的IF语句最多可以达到30-40,具体取决于我有多少个参数。响应可能未按运行顺序。我可能不得不从其他列中选择答案。可以是Column 1,2,6,8,12,20,不一定是Column 1,2,3,4,5,6

我可以通过哪些方式减少IFs语句的数量来优化代码?

示例:

 var speed1template = HtmlService.createTemplateFromFile('speed1');
  speed1template.speed1 = values[1];

  if((values[1] >= 100) || (values[1] <= 50)){

    MailApp.sendEmail("someone@gmail.com",
    "Out of Range Notification",
     "",{htmlBody: speed1template.evaluate().getContent()});

  }

   var temperaturetemplate = HtmlService.createTemplateFromFile('temperature');
  temperaturetemplate.temperature = values[2];

  if((values[2] >= 10) || (values[2] <= 5)){

    MailApp.sendEmail("someone@gmail.com",
    "Out of Range Notification",
     "",{htmlBody: temperaturetemplate.evaluate().getContent()});

  }

   var voltagetemplate = HtmlService.createTemplateFromFile('voltage');
  voltagetemplate.voltage = values[3];

  if((values[3]>= 500)){

    MailApp.sendEmail("someone@gmail.com",
    "Out of Range Notification",
     "",{htmlBody: speed1template.evaluate().getContent()});

  }```

2 个答案:

答案 0 :(得分:4)

这里的技巧是将每个if语句转换为一个对象。找出每个if语句的不同之处。好吧,我们可以看到每个字段的列名都会更改(speed1temperaturevoltage),不同的数字(value[1]value[2],{ {1}})和其他有效值范围。

因此我们需要将这些值放入对象数组中。

value[3]

如果没有分钟数,例如var rangeChecks = [ { name: "speed1", number: 1, max: 100, min: 50 }, { ... }, ... ]; ,则可以改用voltage

然后,我们遍历Number.NEGATIVE_INFINITY并仅使用一个if语句:

rangeChecks

答案 1 :(得分:-1)

不可能进一步优化

如果您对所有值都具有相同的条件和要求,那么这对您来说非常容易。但是手头有一组不同的条件,您必须指定每个条件。单独的IF将是最佳解决方案。