Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery检查数字是否在列表中_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript jquery检查数字是否在列表中

Javascript jquery检查数字是否在列表中,javascript,jquery,arrays,Javascript,Jquery,Arrays,我必须检查一个变量是否等于给定的数字。例如,我现在正在这样做 if (num == 1 || num == 3 || num == 4 || etc.) { // Do something } else if (num == 2 || num == 7 || num == 11 || etc.) { // Do something } 我想应该有更简单的方法。例如,每个if语句包含所有数字的数组 var array1 = [1,3,4,5,6,8,9,10 etc.] var

我必须检查一个变量是否等于给定的数字。例如,我现在正在这样做

if (num == 1 || num == 3 || num == 4 || etc.) {
    // Do something
} else if (num == 2 || num == 7 || num == 11 || etc.) {
    // Do something
}
我想应该有更简单的方法。例如,每个if语句包含所有数字的数组

var array1 = [1,3,4,5,6,8,9,10 etc.]
var array2 = [2,7,11,12,13,14 etc.]

然后看看这个数字是否等于这些数组中的任何一个。但是我不知道怎么做..

既然您要的是jQuery,就有了。如果找不到,则返回一个
-1
,否则返回匹配元素的索引。

为什么不执行一个简单的for循环

for(var i = 0; i < array1.length; i++)
{
  if(array[i] == num)
   {
     //     do something
     break;
   }
}
for(变量i=0;i
您可以使用
inArray
函数()

var arr=[4,“皮特”,8,“约翰”];
var$spans=$(“span”);
$span.eq(0).text(jQuery.inArray(“John”,arr));
$span.eq(1.text)(jQuery.inArray(4,arr));
$span.eq(2).text(jQuery.inArray(“Karl”,arr));
$span.eq(3).text(jQuery.inArray(“Pete”,arr,2));
输出:

“约翰”在3点被发现 在0处找到4 未找到“Karl”,因此-1
“Pete”在数组中,但不在索引2处或之后,因此-1可以在不使用jQuery的情况下执行:

if(array1.indexOf(num1) >= 0)//if -1, then not found
indexOf()方法在数组中搜索指定项,并返回其位置

 var array1 = [1,3,4,5,6,8,9,10];
 var a = array1.indexOf(46); //a = -1; if not found
如果需要支持没有.indexOf()的环境,可以实现

if(!Array.prototype.indexOf){
Array.prototype.indexOf=函数(searchElement/*,fromIndex*/){
“严格使用”;
如果(this==void 0 | | this==null)抛出新类型错误();
var t=对象(本);
var len=t.length>>>0;
如果(len==0)返回-1;
var n=0;
如果(arguments.length>0){
n=数量(参数[1]);
if(n!==n)//验证是否为NaN的快捷方式
n=0;
如果(n!==0&&n!=(1/0)&&n!=-(1/0))n=(n>0 | |-1)*数学地板(数学abs(n));
}
如果(n>=len)返回-1;
var k=n>=0?n:Math.max(len-Math.abs(n),0);
对于(;k
您不需要使用jQuery。这是一个名为
indexOf
的内置函数:

if ( arr.indexOf(item) !== -1 ) {
    // item is in array
}

JQuery-。您可以使用,但请注意,它是。对于这些浏览器,您必须手动执行此操作(或者使用jQuery的
.inArray
,因为jQuery在此处被标记)。或者,在兼容浏览器中:
[1,2,3,4,5].indexOf(2);//1 因为有一个函数做同样的事情吗?请考虑使用数组函数。使用循环没有错。2对于一个有效且快速的解决方案来说是愚蠢的。但是这个函数只在jQuery上工作。。。我认为问题主要是关于javascript的……还要注意,这个答案在技术上比所有
indexOf()
inaray()
答案更正确,因为它保持了类型比较。我不知道OP是否真的需要这个,但应该考虑到这一点。但是请注意,
Array.prototype.indexOf
在IE8或更低版本中不受支持。但是请注意,
Array.prototype.indexOf
在IE8或更低版本中不受支持。但是,请注意,IE8或更低版本不支持该
Array.prototype.indexOf
。是的,但IE8是非常旧的浏览器。没有人支持这一点。去为一家大公司工作或支持它吧。他们中的一些人仍然使用IE7,许多人仍然停留在IE8上。我经常在为客户工作时支持IE8。
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
        "use strict";

        if (this === void 0 || this === null) throw new TypeError();

        var t = Object(this);
        var len = t.length >>> 0;
        if (len === 0) return -1;

        var n = 0;
        if (arguments.length > 0) {
            n = Number(arguments[1]);
            if (n !== n) // shortcut for verifying if it's NaN
            n = 0;
            else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) n = (n > 0 || -1) * Math.floor(Math.abs(n));
        }

        if (n >= len) return -1;

        var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);

        for (; k < len; k++) {
            if (k in t && t[k] === searchElement) return k;
        }
        return -1;
    };
}
if ( arr.indexOf(item) !== -1 ) {
    // item is in array
}