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
}