Javascript:将变量与值数组进行比较
在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
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;