176

JavaScript では、ウィンドウ サイズが 500px を超える場合に何かを行うようにブラウザーに指示しています。私は次のようにします:

if (windowsize > 500) {
    // do this
}

これはうまく機能しますが、これと同じ方法を適用したいと思いますが、数値の範囲があります。したがって、ウィンドウ サイズが 500px から 600px の間である場合にブラウザに何かを実行するように指示したいと思います。これがうまくいかないことはわかっていますが、私が想像した方法は次のとおりです。

if (windowsize > 500-600) {
    // do this
}

これは JavaScript 内でも可能ですか?

4

11 に答える 11

268

値またはそれ自体のどちらも条件が true にならないことを意味するよりもwindowsize大きいかどうかをテストします。500600500600

if (windowsize > 500 && windowsize < 600) {
  // ...
}
于 2013-02-05T22:58:29.710 に答える
138

ちょっと時間があったので、あなたはすでに答えを受け入れていますが、私は次のように貢献したいと思いました:

Number.prototype.between = function(a, b) {
  var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return this > min && this < max;
};

var windowSize = 550;

console.log(windowSize.between(500, 600));

JS フィドルのデモ

または、数値がend-points を含む定義された範囲内にあるかどうかを確認するオプションが必要な場合:

Number.prototype.between = function(a, b, inclusive) {
  var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return inclusive ? this >= min && this <= max : this > min && this < max;
};

var windowSize = 500;

console.log(windowSize.between(500, 603, true));

JS フィドルのデモ

コメントに記載されているように、上記にマイナーな修正を追加するために編集されました。

Function.prototype.apply()遅い!一定量の引数があるときに呼び出すだけでなく、無意味です...

の使用を削除する価値がありましたFunction.prototype.apply()。これにより、最初に「包括的」オプションなしで、上記のメソッドの修正バージョンが生成されます。

Number.prototype.between = function(a, b) {
  var min = Math.min(a, b),
    max = Math.max(a, b);

  return this > min && this < max;
};

var windowSize = 550;

console.log(windowSize.between(500, 600));

JS フィドルのデモ

また、「包括的」オプションを使用すると、次のようになります。

Number.prototype.between = function(a, b, inclusive) {
  var min = Math.min(a, b),
    max = Math.max(a, b);

  return inclusive ? this >= min && this <= max : this > min && this < max;
}

var windowSize = 500;

console.log(windowSize.between(500, 603, true));

JS フィドルのデモ

参考文献:

于 2013-09-18T20:31:51.710 に答える
99

変数を内側に配置して、変数が範囲値の間にあることをコードが検証しているという追加のヒントを与えることを好みます

if (500 < size && size < 600) { doStuff(); }
于 2013-02-05T23:06:07.587 に答える
3

これは一般的な方法であり、どこでも使用できます

const isBetween = (num1,num2,value) => value > num1 && value < num2 
于 2020-11-25T07:58:55.170 に答える
1

可能な最短の方法は次のとおりです。

if (Math.abs(v-550)<50) console.log('short')
if ((v-500)*(v-600)<0) console.log('short')

パラメータ化:

if (Math.abs(v-max+v-min)<max+min) console.log('short')
if ((v-min)*(v-max)<0) console.log('short')

最初の辺の仕組みがわからない場合は、両辺を 2 で割ることができます;)

于 2020-04-28T08:52:28.837 に答える