javascript中if(a>b)的有效替代方案,用于检查变量范围
efficient alternative to if (a>b) in javascript for checking a variable range
我希望标题不要太笼统,也不要有误导性。
var blah;
if(a > 10) blah = 'large';
if(a <= 10 && a > 5) blah = 'medium';
if(a <= 5 && a >= 0) blah = 'small';
难道没有一种更优雅、更简洁的方法来实现范围检查吗?
是,使用else
子句:
var blah;
if(a > 10){
blah = 'large';
}else if(a > 5){
blah = 'medium';
}else if(a >= 0){
blah = 'small';
}
由于您在每个语句中进行简单的赋值,因此使用三元表达式也可能很优雅,尽管许多人会认为这不太可读:
var blah =
a > 10 ? 'large' :
a > 5 ? 'medium' :
a >= 0 ? 'small' :
undefined; // May want to choose a better default value for a < 0
您可以使用ternary operators
var blah;
blah = a > 10 ? 'large' : (a > 5 ? 'medium' : 'small' ) ;
如果你有很多区间,你可以选择这样的东西:
var ranges = [[10, 'large'],
[5, 'medium'],
[0, 'small']];
function range(n) {
for (var i = 0; i < ranges.length; i++) {
if (n > ranges[i][0]) {
return ranges[i][1];
}
}
return 'default value';
}
这并没有那么灵活,因为你不能为每种情况指定是使用<
还是<=
,但如果我有很多范围,我可能会写这样的东西。其他的答案都很好,我只是想把这个作为一个想法来添加。
如果范围是常量,则可以使用switch语句和modulo。例如
var blah;
switch(a-(a % 5)) {
case 10:
blah = 'large';
break;
case 5:
blah = 'medium';
break;
case 0:
blah = 'small';
break;
default:
blah = 'large';
}
当然,只有当每个范围之间的差异相等时,才能使用它。
相关文章:
- 轻量级zxcvbn替代方案
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- ng映射方向备选方案
- 如何有效地将游戏数据存储在URL查询字符串中
- 比许多使用JavaScript的循环迭代更有效的解决方案
- jQuery内容幻灯片(有效,但正在寻找更简单的解决方案)
- jshint 的解决方案“最好用点表示法写”当我有效使用非点表示法时
- 创建包含正则表达式匹配中所有组的数组的有效解决方案
- Mozilla Firefox表示未定义Referenceerror事件,没有任何解决方案有效
- 小型JavaScript解决方案需要:此行是否有效代码
- 什么是最有效的JavaScript语法检查解决方案
- 我是应该将移动浏览器虚拟视口视为系统性错误,还是有有效的解决方案
- Regex从URL中提取匹配的字符串(有效,更好的解决方案?)
- javascript中if(a>b)的有效替代方案,用于检查变量范围
- 如何从中心扩展选择器宽度(或其他有效的替代方案)
- 在同源策略世界中使用Ajax单点登录-有效的解决方案
- 为什么我的解决方案有效,而另一个解决方案无效
- 是否有更好/有效的解决方案来根据每个数据表单元格的值设置其样式
- 需要找到更有效的解决方案,将空白空间写入页面
- 在不需要大量编码的情况下对JSP应用程序进行分页的最有效解决方案是什么?