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;
    };
};

xaにあるかどうかを確認する必要がありb、コンピューターと話す必要がある場合は、

x が a より大きく、x が b より小さい場合、適切な結果が得られます。

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