是否有更快的编写OR运算符的方法?

时间:2014-01-29 20:25:06

标签: javascript

有没有更快的写作方式?

if ($('#id').val()==7 || $('#id').val()==8 || $('#id').val()==9){
    console.log('value of #id is 7, 8, or 9!')
};

我想的是:

if ($('#id').val()== 7||8||9){
    console.log('value of #id is 7, 8, or 9!')
};

6 个答案:

答案 0 :(得分:12)

您可以使用indexOf(),它返回在数组中可以找到给定元素的第一个索引,如果不存在则返回-1。

if ([7,8,9].indexOf(+$('#id').val()) > -1){
    console.log('value of #id is 7, 8, or 9!')
};

上述功能适用于IE9 +,对于较旧的浏览器,您可以使用PolyFilljQuery.inArray(value, array

if (jQuery.inArray(+$('#id').val(),[7,8,9]) > -1){
    console.log('value of #id is 7, 8, or 9!')
};

答案 1 :(得分:7)

加速代码的最佳方法是缓存该DOM引用:

var idval = +$('#id').val();
if (idval === 7 || idval === 8 || idval === 9) { ...  }

当然,如果它真的是那三个值,那么:

if (idval >= 7 && idval <= 9) { ... }

答案 2 :(得分:1)

你可以做一个转换:

switch($('#id').val()){
    case 7:
    case 8:
    case 9:
        console.log('value of #id is 7, 8, or 9!');
        break;
    default:
        console.log('value of #id is NOT 7, 8, or 9!')
}

答案 3 :(得分:1)

您还可以使用 $.inArray()

if($.inArray(+$('#id').val(),[7,8,9])) > -1)
    console.log('value of #id is 7, 8, or 9!')
};

答案 4 :(得分:0)

除非值列表真的很长,否则它并不是那么简单:

if ([7, 8, 9].indexOf(parseInt($('#id').val(), 10)) != -1)

答案 5 :(得分:0)

我刚将这一个添加到jsperf: in 运算符。每个键:值(例如7:7)对中的值与此无关。

if ($('#id').val() in {7:7, 8:8, 9:9}) {
  console.log('value of #id is 7, 8, or 9!')
};

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in