0

对于交互式信息图,我有 3 个整数(并且只有 3 个)分配给变量,这些变量可以是 0 到 50000 之间的任何值。通常这些数字的值很接近,我需要检测 2、所有 3 或 0 的值何时在 20 以内。

如果它们是彼此相距 20 以内的 2 个值。我还需要检查它们是否都高于或低于另一个值,以便为每种情况以及它适用的每个变量触发特定函数。

努力想出一个没有大量 if 语句的体面的解决方案。有任何想法吗?

4

2 回答 2

0

试试这个:

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 将区分您的条件。

于 2013-07-30T05:11:10.753 回答
0

这是一个不断触发的功能吗?我建议从最基本的东西开始,让你知道它做了什么,然后如果性能是一个问题,然后重构。开始:

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;
    }
}
于 2013-07-30T05:11:14.550 回答