IF语句中的多个条件

时间:2014-02-06 21:19:15

标签: javascript if-statement

有没有更好的方法来检查AddressIndex的条件?

if (AddressIndex == 104 || AddressIndex == 107 || AddressIndex == 108 || AddressIndex == 133 || AddressIndex == 155 || AddressIndex == 165 || AddressIndex ==  167 || AddressIndex == 168 || AddressIndex == 182 || AddressIndex == 214 || AddressIndex == 246 || AddressIndex == 260 || AddressIndex == 341 || AddressIndex == 345)

{

alert ("Sorry - We don't deliver to this address.");

}

4 个答案:

答案 0 :(得分:2)

正如@dsimer所说,我认为这是最好的方式。它看起来像是:

switch AddressIndex {
  case 104:
  case 107:
  case 108:
  case ...:
  case ...:
    alert("Sorry - We don't deliver to this address.");
  break;
}

我无需为您输入所有数字。

答案 1 :(得分:0)

您始终可以使用switch statement

答案 2 :(得分:0)

如果你使用jQuery:

var a = new Array(104, 107, 108, 133, 155,
                  165, 167, 168, 182, 214,
                  246, 260, 341, 345);
if($.inArray(AddressIndex, a))
{
    alert ("Sorry - We don't deliver to this address.");
}

否则您可以使用indexOf方法:

var a = new Array(104, 107, 108, 133, 155,
                  165, 167, 168, 182, 214,
                  246, 260, 341, 345);

if(a.indexOf(AddressIndex) != -1)
{
    alert ("Sorry - We don't deliver to this address.");
}

总是有一个转换作为最后的手段:

switch(AddressIndex)
{
    case 104:
    case 107:
    case 108:
    case 133:
    case 155:
    case 165:
    case 167:
    case 168:
    case 182:
    case 214:
    case 246:
    case 260:
    case 341:
    case 345:
        alert ("Sorry - We don't deliver to this address.");
    break;
}

答案 3 :(得分:0)

就性能而言,哈希查找最快:

var nondelivery = {
  104: true, 107: true, 108: true, 133: true, 155: true,
  165: true, 167: true, 168: true, 182: true, 214: true,
  246: true, 260: true, 341: true, 345: true };

if( nondelivery[AddressIndex] )
  alert ("Sorry - We don't deliver to this address.");

这当然只是学术上的;只有在多次迭代的循环中才会注意到速度差异。