压缩条件
Compress If Conditions
是否有这样一种方法来压缩if
语句中的条件块?从代码中可以看到,itemKey
是一个变量。我将第一个字母设置为小写,这样我就可以将其与另一个变量letter
匹配。下面的工作完美,但我想清理它。我能不能把&&
之后的所有||
都拉到一起,以包含0-9这个数字?这是string
,而不是integer
。
firstLetterLower = itemKey.charAt(0).toLowerCase();
if(firstLetterLower==letter || (
letter=='number' && (
firstLetterLower=='0' || firstLetterLower=='1' || firstLetterLower=='2' ||
firstLetterLower=='3' || firstLetterLower=='4' || firstLetterLower=='5' ||
firstLetterLower=='6' || firstLetterLower=='7' || firstLetterLower=='8' ||
firstLetterLower=='9'
))) {
您可以用
替换这些测试firstLetterLower.match(/[0-9]/)
或
( firstLetterLower>=0 && firstLetterLower<=9 )
使用正则表达式,您可以:
firstLetterLower = itemKey.charAt(0).toLowerCase();
if(firstLetterLower == letter || firstLetterLower.match(/^[0-9]$/) ){
}
这将检查您指定的letter
以及0和9之间的匹配。
然而,如果你不想使用regex(开销也许?在这里使用一个非常简单的regex并不会引起注意,您可以这样做:
firstLetterLower = itemKey.charAt(0).toLowerCase();
if(firstLetterLower == letter || (firstLetterLower >= 0 && firstLetterLower <= 9)){
}
尝试使用正则表达式:
firstLetterLower.match(/^[0-9]/)
您可以使用regex和您所拥有的组合。我可能会把它放到一个函数中:
function isMatch(itemKey, letter) {
firstLetterLower = itemKey.charAt(0).toLowerCase();
if (firstLetterLower == letter) return true;
if (letter == 'number'){
if (firstLetterLower.match(/[0-9]/))
return true;
}
return false;
}
alert("1:" + isMatch('item', 'i'));
alert("2:" +isMatch('1234567', 'number'));
alert("3:" +isMatch('abc','number'));
alert("4:" +isMatch('123','a'));
相关文章:
- 使用压缩的JavaScript文件(不是运行时压缩)
- 通过js在新选项卡中有条件地打开url
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- jQuery-有条件地附加HTML
- 根据某些条件在视图之间切换
- 如何做到这一点,使代码在不传递条件后执行函数
- 有条件更新d3.js力图中节点的最佳方法
- javascript中的布尔条件
- 压缩phonegap中ios的图像插件
- Woocommerce产品选项有条件
- 基于两个条件退出While循环
- 有条件地在选项标记中应用布尔属性
- 使用javascript以HTML形式验证条件
- 聚合物0.5.5:核心列表中的条件模板和/或模板动态参考
- javascript对象操作:根据指定条件选择属性
- 如何在单个“if”语句中压缩多个“indexOf”条件
- 在Django中使用JS压缩器处理浏览器条件JS
- JScript条件编译+JavaScript压缩=预处理器
- 压缩条件
- yuglify JavaScript压缩器删除条件编译