Dyc*_*yck 125 javascript
在JavaScript中,如果窗口大小超过500px,我告诉浏览器执行某些操作.我是这样做的:
if (windowsize > 500) {
// do this
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但我想应用同样的方法,但有一系列数字.所以如果窗口大小介于500和600px之间,我想告诉我的浏览器.我知道这不会奏效,但这就是我想象的方式.
if (windowsize > 500-600) {
// do this
}
Run Code Online (Sandbox Code Playgroud)
这在JavaScript中是否可行?
und*_*ned 206
测试是否windowsize大于500和小于600意味着这两个值500或其600本身都不会导致条件变为真.
if (windowsize > 500 && windowsize < 600) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*mas 104
我有一个时刻,所以,虽然你已经接受了答案,但我认为我会贡献以下内容:
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));Run Code Online (Sandbox Code Playgroud)
或者,如果您希望选择检查数字是否在定义的范围内,包括终点:
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));Run Code Online (Sandbox Code Playgroud)
编辑为上述内容添加了一个小修正案,因为 - 如评论中所述 -
......
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));Run Code Online (Sandbox Code Playgroud)
并且具有"包容性"选项:
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));Run Code Online (Sandbox Code Playgroud)
参考文献:
Dav*_*vid 70
我更喜欢将变量放在内部以提供额外的提示,即代码验证我的变量在范围值之间
if (500 < size && size < 600) { doStuff(); }
Run Code Online (Sandbox Code Playgroud)
ant*_*kiy 23
这是一个老问题,但对像我这样的人可能有用.
lodash有_.inRange()功能https://lodash.com/docs/4.17.4#inRange
例:
_.inRange(3, 2, 4);
// => true
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以简单地做到
if (windowsize > 500 && windowsize < 600) {
//your logic
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要干净的代码,您可以在任何常见位置的主 js 文件中编写自己的函数。
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;
};
Run Code Online (Sandbox Code Playgroud)
然后你可以这样称呼它
if(windowsize.between(500, 600)){
//your logic
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我知道有一个公认的答案,但我想提供一些在某些情况下有用的方法。如果我们想检查是否n在x和 之间y,我们可以这样做:
x <= n && n <= y
(x - n) * (y - n) <= 0
Run Code Online (Sandbox Code Playgroud)
当您尝试获得相同的结果(即使交换x和 )时,第二个非常有用y。
小智 5
这是一个通用方法,你可以在任何地方使用
const isBetween = (num1,num2,value) => value > num1 && value < num2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
289938 次 |
| 最近记录: |