假设我有一个类似下面的函数checkTime,我必须同时检查多个条件。
var result=0;
function checkTime(time1, time2) {
if (time1 >= 0 && time2 <= 0) {
result = 1;
}
else if (time1 >= 0 && time2 <= 1) {
result = 4;
}
else if (time1 >= 2 && time2 <= 3) {
result = 5;
}
else if (time1 >= 4 && time2 <= 6) {
result = 6;
}
else if (time1 >= 7 && time2 <= 9) {
result = 7;
}
else if (time1 >= 11 && time2 <= 12) {
result = 8;
}
else if (time1 >= 13 && time2 <= 15) {
result = 9;
}
else if (time1 >= 16 && time2 <= 17) {
result = 10;
}
else if (time1 >= 19 && time2 <= 20) {
result = 11;
}
return result;
}
(上述示例是假设的)
我使用的函数完全有效,但是:
Thanx!
首先,你有可能得到一个未定义的结果,这使得事情变得模棱两可。结果应该从0开始吗?这是一个重要的细节。其次,您似乎在处理边界,因此这将有助于更改<代码>
var result = 0;
var diff = time2 - time1;
var bounds = [21, 19, 16, 13, 11, 7, 4, 2, 0];
if (diff <= 0) result = 0; // unexpected outcome
else
for (position = 1; position < bounds.length; ++position) {
if (time1 >= bounds[position]) {
if (time2 < bounds[position - 1]) {
result = 3 + (bounds.size - position);
}
break;
}
}
return result;
其他实现是可能的,但是很难根据你的问题来判断你到底在解决什么问题。
后续行动
这段代码有一个空白:
else if (time1 >= 7 && time2 <= 9) {
result = 7;
}
else if (time1 >= 11 && time2 <= 12) {
result = 8;
}
如果时间=10和时间2=10,则不存在匹配。当你重复自己的时候,很容易错过这种错误。为每个条件指定下限和上限是不必要的重复。因为我看不到边界的模式(可以委托给函数),所以我只是将下限放入一个数组中,并确保它按降序排序,以便循环可以在第一次匹配后停止。
如果代码相同,并且只有值更改,则可以执行以下操作:
function checkTime(time1, time2) {
[
[0, 0, 0],
[0, 1, 0]
].forEach(function (it) {
if (time1 >= it[0] && time2 <= it[1]) {
return it[2];
}
});
}
可以使用数组来表示所有组合:
tests = [
{ time1: 0, time2: 0, result: 1 },
{ time1: 0: time2: 1, result: 4 },
...
];
for (var i = 0; i < tests.length; i++) {
if (time1 >= tests[i].time1 && time2 <= tests[i].time2) {
return tests[i].result;
}
}
问题内容: 我最近发现了简写if语句,并且在网上搜索后找不到明确的答案。 如果条件为真/假,是否可以执行2条语句? 例如 看到我没有碰到他们使用它的示例,我想这是不可能的,但我不想错过 问题答案: 您正在谈论条件分配。您应该查看所编写的内容所定义的内容: 那就是在评估“表达式”,如果是,则执行“ 1 AND 2”,然后将值赋给x。如果将“表达式”评估为假,则将评估“ 3”并将其分配给x。因此,您绝
我有一个以字符串形式返回sql查询的方法。此方法考虑参数“level”,基于此参数有多个if-else语句,如 将来的级别数量会增加,我不想写讨厌的 if else 语句,所以我正在寻找适用于这种情况的更清洁且可维护的设计方法。我正在考虑策略设计模式,但不确定它是否最适合这种情况。
问题内容: 嗨,我想运行一个if语句,但是在我所有的AS别名附近都会不断出现语法错误,我在做什么错? 问题答案: 有两个问题。缺少BEGIN以及SELECT都需要在每个IF语句内。您不能在SELECT中包含内联IF,如果需要执行此操作,则可以使用CASE语句。
问题内容: 我目前正在制作一份报告,向我显示我们销售团队涵盖的所有邮政编码。 每个团队涵盖100多个邮政编码。我想做的是创建一个报告,将邮政编码内的客户带回去。目前,我的代码如下所示。 我希望的是有一种更快,更轻松的方式来做到这一点。任何建议将不胜感激。有没有一种方法可以为每个销售团队创建变量,例如 只是在钓鱼的想法。干杯 问题答案:
本文向大家介绍Lua 多个结果,包括了Lua 多个结果的使用技巧和注意事项,需要的朋友参考一下 示例 Lua中的函数可以返回多个结果。 例如: 调用函数时,要保存这些值,必须使用以下语法: 这将导致a = b = c = 5这种情况。也可以通过在变量_列表中的所需位置使用抛弃型变量来忽略返回的值: 在这种情况下,第二个返回值将被忽略。通过不将返回值分配给任何变量,也可以忽略返回值: 变量a将被分配
问题内容: 我想一次执行多个查询或作业。像这样的东西: 或多个选择查询。查询将是动态的。 但是我无法做到这一点,以半冒号分隔的多个查询的运行方式是什么? 问题答案: 您可以使用以下示例实现addBatch和executeBatch命令同时执行多个 SQL 命令。 批处理允许您将相关的SQL语句分组为一个批处理,并通过一次调用将其提交给数据库。参考 当您一次将多个SQL语句发送到数据库时,可以减少通