3

我有一个 Javascript 函数没有返回我预期的结果。我正在尝试根据其他 2 个 x,y 点确定矩形内是否存在 x,y 点。在我的代码中,x 和 y 是有问题的原始点。z1 和 z2 是矩形的左上角坐标,z3 和 z4 是右下角坐标。

function isInside(x,y,z1,z2,z3,z4){
x1 = Math.min(z1, z3);
x2 = Math.max(z1, z3);
y1 = Math.min(z2, z4);
y2 = Math.max(z2, z4);
if ((x1 <= x <= x2) && (y1 <= y <= y2)) {
 console.log (x1 + "," + x + "," + x2); 
 console.log (y1 + "," + y + "," + y2);
 return true;
} else {
 return false;
};
};

如果我评估 isInside(110,175,50,50,100,100) 我是真的。这是出乎意料的,因为点 110,175 不存在于 50,50 和 100,100 的矩形内。任何帮助,将不胜感激。

4

2 回答 2

5

(x1 <= x <= x2)不做你想让它在 Javascript 中做的事情:你必须使用x1 <= x && x <= x2.

如果您为这些变量插入实际数字并在 Chrome 的控制台中尝试此操作,您会看到整个语句的计算结果始终为 true:

1 <= 3 <= 5
true
9 <= 3 <= 5
true
于 2013-02-22T07:43:00.053 回答
3

这是答案

function isInside(x, y, z1, z2, z3, z4) {
    x1 = Math.min(z1, z3);
    x2 = Math.max(z1, z3);
    y1 = Math.min(z2, z4);
    y2 = Math.max(z2, z4);
    if ((x1 <= x ) && ( x <= x2) && (y1 <= y) && (y <= y2)) {
        console.log(x1 + "," + x + "," + x2);
        console.log(y1 + "," + y + "," + y2);
        return true;
    } else {
        return false;
    };
};

如果您需要检查是否x介于两者之间a,并且b您必须与计算机交谈,例如,

如果 x 大于 a 并且 x 小于 b,那么它将给出正确的结果

if(x >= a && x <= b){
   // true
}
于 2013-02-22T07:49:55.693 回答