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

时间:2014-04-16 11:51:46

标签: javascript arrays

在javascript中我正在做以下工作正常。

if (myVar == 25 || myVar == 26 || myVar == 27 || myVar == 28)
 {
   //do something
 }

我该如何缩短它?如下所示。

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

if(myVar.indexOf("25","26","27","28") > -1) ) {//do something}

5 个答案:

答案 0 :(得分:18)

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

使用

var arr = [25, 26, 27, 28];
console.log(arr.indexOf(25) > -1);
console.log(arr.indexOf(31) > -1);


也可以使用

Array.includes()方法返回boolean

var arr = [25, 26, 27, 28];
console.log(arr.includes(25));
console.log(arr.includes(31));

答案 1 :(得分:9)

试试:

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

答案 2 :(得分:3)

其他方式:

myVar = (myVar == parseInt(myVar) ? myVar : false); //to check if variable is an integer and not float
if ( myVar >= 25 && myVar <= 28){}

Live demo

编辑 根据Anthony Grist的评论

如果您知道这些值将是什么(即它们不是动态的),并且您的数组包含一系列连续的数值,这种方式就有效。

答案 3 :(得分:3)

由于indexOf(),有一些浏览器兼容性问题,需要一个额外的步骤(将结果与-1进行比较),另一种跨浏览器方法是以下jQuery实用程序方法(如果你在你的jQuery中包含jQuery)项目):

if($.inArray(myVar, [25, 26, 27, 28]) > -1) {
     // ... do something ... 
}

答案 4 :(得分:1)

  

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

Array.indexOf适用于所有现代浏览器(FF,Chrome,&gt; IE8),请注意,Array.indexOf不适用于IE8。 如果您想在IE8中使用它,请使用以下代码:

  

window.onload = function(){

     

if(!Array.prototype.indexOf){

     
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;
         

};

  
     

}

     

}

相关问题