如何检查数字是否在两个值之间?

2020/11/12 18:42 · javascript ·  · 0评论

在JavaScript中,如果窗口大小大于500px,我要告诉浏览器执行某些操作。我这样做是这样的:

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

这很好用,但是我想使用相同的方法,但是要有一定范围的数字。所以我想告诉我的浏览器在窗口大小介于500px和600px之间时做些什么。我知道这行不通,但是这是我的想象:

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

在JavaScript中甚至可能吗?

测试是否windowsize大于500或小于600表示值500600本身不会导致条件变为真。

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

我花了一点时间,所以,尽管您已经接受了答案,但我认为我会做出以下贡献:

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小提琴演示

或者,如果您希望选择检查数字是否在定义的范围内(包括端点)

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(),这会产生上述方法的修改版本,首先没有'inclusive'选项:

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小提琴演示

参考文献:

我更喜欢将变量放在里面,以进一步提示代码正在验证我的变量在范围值之间

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

这是一个老问题,但是对像我这样的人可能有用。

lodash具有_.inRange()功能https://lodash.com/docs/4.17.4#inRange

例:

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

请注意,此方法利用Lodash实用程序库,并且需要访问Lodash的已安装版本。

您可以在if条件中使用Multiple子句,而无需编写

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

因为这在逻辑上真的没有任何意义,JavaScript会读取您的if条件,例如

windowSize > -100 

因为它计算500-600-100

&&例如,您应该使用严格检查这两种情况,如下所示

if( windowSize > 500 && windowSize < 600 ){

// Then doo something

}

我刚刚实现了这部分jQuery,以显示和隐藏引导程序模态值。根据用户文本框条目的值范围显示不同的字段。

$(document).ready(function () {
    jQuery.noConflict();
    var Ammount = document.getElementById('Ammount');

    $("#addtocart").click(function () {

            if ($(Ammount).val() >= 250 && $(Ammount).val() <= 499) {
                {
                    $('#myModal').modal();
                    $("#myModalLabelbronze").show();
                    $("#myModalLabelsilver").hide();
                    $("#myModalLabelgold").hide();
                    $("#myModalPbronze").show();
                    $("#myModalPSilver").hide();
                    $("#myModalPGold").hide();
                }
            }
    });

这是最短的方法:

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

本文地址:http://javascript.askforanswer.com/ruhejianchashuzishifouzailianggezhizhijian.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!