我有大约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()});
}```
答案 0 :(得分:4)
这里的技巧是将每个if语句转换为一个对象。找出每个if语句的不同之处。好吧,我们可以看到每个字段的列名都会更改(speed1
,temperature
,voltage
),不同的数字(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将是最佳解决方案。