我有一个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)我会变成现实。这是出乎意料的,因为点150,175不存在于50,50和100,100的矩形内。任何帮助将不胜感激。
答案 0 :(得分:5)
(x1 <= x <= x2)
无法在Javascript中执行您想要的操作:您必须使用x1 <= x && x <= x2
。
如果您插入这些变量的实际数字并在Chrome的控制台中尝试这一点,您可以看到整个语句总是评估为true:
1 <= 3 <= 5
true
9 <= 3 <= 5
true
答案 1 :(得分:2)
这是答案
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
}