压缩条件

时间:2013-01-18 17:56:32

标签: javascript

是否有这样的方法来压缩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'
   ))) {

4 个答案:

答案 0 :(得分:6)

您可以使用

替换这些测试
firstLetterLower.match(/[0-9]/)

( firstLetterLower>=0 && firstLetterLower<=9 )

答案 1 :(得分:0)

尝试使用正则表达式:

firstLetterLower.match(/^[0-9]/)

答案 2 :(得分:0)

使用正则表达式,您可以:

firstLetterLower = itemKey.charAt(0).toLowerCase();

if(firstLetterLower == letter || firstLetterLower.match(/^[0-9]$/) ){
}

这将检查您指定的letter以及0到9之间的匹配。

但是,如果你不想使用正则表达式(也许是开销?不是说这里有一个非常简单的正则表达式会引起注意),你可以这样做:

firstLetterLower = itemKey.charAt(0).toLowerCase();

if(firstLetterLower == letter || (firstLetterLower >= 0 && firstLetterLower <= 9)){
}

答案 3 :(得分:0)

您可以结合使用正则表达式和所拥有的内容。我可能会把它放到一个函数中:

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