網站搜尋

javascript - 如何檢查一個數字是否介於兩個值之間?


在 JavaScript 中,我告訴瀏覽器,如果視窗大小大於 500 像素,就執行某些操作。我是這麼做的:

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

這個方法效果很好,但我想應用相同的方法,只是針對一個範圍的數字。所以我想告訴我的瀏覽器,如果視窗大小在 500px 到 600px 之間,就執行某些操作。我知道這樣行不通,但這就是我想像的方式:

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

在 JavaScript 中這甚至可能嗎?

答案#1

測試 windowsize 是否大於 500 且小於 600,這意味著 500 或 600 本身都不會使條件為真。

if (windowsize > 500 && windowsize < 600) {
  // ...
}

答案#2

我有一點時間,所以,雖然你已經接受了一個答案,我還是想提供以下內容:

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 Fiddle 示範。

或者,如果你希望有選擇來檢查一個數字是否在定義的範圍內,包含端點:

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 Fiddle 示範。

參考文獻:

  • Math.max()。
  • Math.min()。

答案#3

我比較喜歡把變數放在裡面,以額外提示程式碼正在驗證我的變數是否在一個數值範圍內

if (500 < size && size < 600) { doStuff(); }

答案#4

這是一個老問題,但可能對像我這樣的人有用。

lodash 有 _.inRange() 函數 https://lodash.com/docs/4.17.4#inRange

範例:

_.inRange(3, 2, 4);
// => true

請注意,此方法使用了 Lodash 工具庫,並且需要能夠使用已安裝的 Lodash 版本。