Javascript:将变量与值数组进行比较

Javascript:将变量与值数组进行比较,javascript,arrays,Javascript,Arrays,在javascript中,我做了以下工作,效果很好 if (myVar == 25 || myVar == 26 || myVar == 27 || myVar == 28) { //do something } 我怎样才能缩短它?类似下面的内容 if (myVar IN ('25','26','27','28')) { //do something } 或 可以使用,它返回数组中可以找到给定元素的第一个索引,如果不存在,则返回-1 使用 var-arr=[25,2

在javascript中,我做了以下工作,效果很好

if (myVar == 25 || myVar == 26 || myVar == 27 || myVar == 28)
 {
   //do something
 }
我怎样才能缩短它?类似下面的内容

if (myVar IN ('25','26','27','28')) {
    //do something
   }

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

使用

var-arr=[25,26,27,28];
控制台日志(arr.indexOf(25)>-1);
控制台日志(arr.indexOf(31)>-1)只需尝试:

if ( [25, 26, 27, 28].indexOf(myVar) > -1 ) {}
其他方式:

myVar = (myVar == parseInt(myVar) ? myVar : false); //to check if variable is an integer and not float
if ( myVar >= 25 && myVar <= 28){}
myVar=(myVar==parseInt(myVar)?myVar:false//检查变量是否为整数而不是浮点
如果(myVar>=25&&myVar,因为
indexOf()
,存在一些浏览器兼容性问题,并且需要额外的步骤(将结果与-1进行比较),另一种跨浏览器的方法是以下jQuery实用程序方法(如果您在项目中包括jQuery):

if([25,26,27,28].indexOf(myVar)>-1{}

Array.indexOf将适用于所有现代浏览器(FF、Chrome、>IE8),但需要注意的是Array.indexOf不适用于IE8。 如果您想让它在IE8中工作,请使用以下代码:

window.onload=函数(){

if(!Array.prototype.indexOf){

Array.prototype.indexOf=函数(elt/*,from*/){
var len=this.length>>>0;
var from=Number(参数[1])| | 0;
from=(from<0)?Math.ceil(from):Math.floor(from);
如果(从<0开始){
from+=len;
}
for(;from
})

}

}


>24&&<29
甚至更短:)如果您知道这些值将是什么(即它们不是动态的),并且您的数组包含一系列连续的数值,那么就可以了。为了兼容性,请参见该线程中的说明,如果您使用jQuery,可以使用`$.inArray(
myVar = (myVar == parseInt(myVar) ? myVar : false); //to check if variable is an integer and not float
if ( myVar >= 25 && myVar <= 28){}
if($.inArray(myVar, [25, 26, 27, 28]) > -1) {
     // ... do something ... 
}
Array.prototype.indexOf = function(elt /*, from*/) {
  var len = this.length >>> 0;
  var from = Number(arguments[1]) || 0;
  from = (from < 0) ? Math.ceil(from) : Math.floor(from);
  if (from < 0) {
    from += len;
  }
  for (; from < len; from++) {
    if (from in this && this[from] === elt){
      return from;
  }
}
return -1;