对于交互式信息图,我有 3 个整数(并且只有 3 个)分配给变量,这些变量可以是 0 到 50000 之间的任何值。通常这些数字的值很接近,我需要检测 2、所有 3 或 0 的值何时在 20 以内。
如果它们是彼此相距 20 以内的 2 个值。我还需要检查它们是否都高于或低于另一个值,以便为每种情况以及它适用的每个变量触发特定函数。
努力想出一个没有大量 if 语句的体面的解决方案。有任何想法吗?
对于交互式信息图,我有 3 个整数(并且只有 3 个)分配给变量,这些变量可以是 0 到 50000 之间的任何值。通常这些数字的值很接近,我需要检测 2、所有 3 或 0 的值何时在 20 以内。
如果它们是彼此相距 20 以内的 2 个值。我还需要检查它们是否都高于或低于另一个值,以便为每种情况以及它适用的每个变量触发特定函数。
努力想出一个没有大量 if 语句的体面的解决方案。有任何想法吗?
试试这个:
adiff = Math.abs(a-b);
bdiff = Math.abs(b-c);
cdiff = Math.abs(c-a);
if (Math.max(adiff, bdiff, cdiff) < 21) {
}
if (Math.min(adiff, bdiff, cdiff) < 21) {
}
这两个 if 将区分您的条件。
这是一个不断触发的功能吗?我建议从最基本的东西开始,让你知道它做了什么,然后如果性能是一个问题,然后重构。开始:
Var a, b, c;
a = 23;
b = 25;
c = 29;
If (a - b <= 20 || b - a <= 20) {
SeeIfLower(a,b,c);
} else if (b - c <= 20 || c - b <= 20) {
SeeIfLower(a,b,c);
} else if (a - c <= 20 || c - a <= 20) {
SeeIfLower(a,b,c);
} else { //no 2 values close
return null;
};
function SeeIfLower (a, b,c) {
if (a < b && a < c) {
firefunction();
} else if (b < c && a < c) {
firefunction();
} else if (c < b && c < b) _{
firefunction();
} else {
return null;
}
}