jquery检查数字是不是在列表中[重复]
Posted
技术标签:
【中文标题】jquery检查数字是不是在列表中[重复]【英文标题】:jquery check if number is in a list [duplicate]jquery检查数字是否在列表中[重复] 【发布时间】:2013-07-29 16:06:17 【问题描述】:我必须检查一个变量是否等于给定的数字或另一个。例如,我现在正在这样做。
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 - .inArray. 您可以使用.indexOf()
,但请注意它是not supported in IE8 or lower。对于那些浏览器,您必须手动完成(或使用 jQuery 的 .inArray
,因为此处标记了 jQuery)。
或者,在兼容的浏览器中:[1,2,3,4,5].indexOf(2); // 1
【参考方案1】:
indexOf() 方法在数组中搜索指定项,并返回其位置。
var array1 = [1,3,4,5,6,8,9,10];
var a = array1.indexOf(46); //a = -1; if not found
如果您需要支持没有 .indexOf() 的环境,您可以实现 MDN fix.
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;
;
【讨论】:
请注意,IE8 或更低版本不支持Array.prototype.indexOf
。【参考方案2】:
由于您要求使用 jQuery,因此有 .inArray()。如果未找到,则返回 -1
,否则返回匹配元素的索引。
【讨论】:
【参考方案3】:你为什么不做一个简单的 for 循环?
for(var i = 0; i < array1.length; i++)
if(array[i] == num)
// do something
break;
【讨论】:
因为有一个函数可以做同样的事情? 请考虑使用 inArray 函数。 使用循环没有错。 -2 对于一个有效且快速的解决方案是愚蠢的。 但该功能仅适用于 jQuery ...我认为问题主要是关于 javascript ...还请注意,此答案在技术上比所有indexOf()
或 inArray()
答案更正确,因为它保持类型强制比较。不知道 OP 是否真的需要这个,但应该考虑到。【参考方案4】:
你可以使用inArray
函数(http://api.jquery.com/jQuery.inArray/)
<script>var arr = [ 4, "Pete", 8, "John" ];
var $spans = $("span");
$spans.eq(0).text(jQuery.inArray("John", arr));
$spans.eq(1).text(jQuery.inArray(4, arr));
$spans.eq(2).text(jQuery.inArray("Karl", arr));
$spans.eq(3).text(jQuery.inArray("Pete", arr, 2));
</script>
输出:
“约翰”发现于 3 4 发现于 0 没有找到“Karl”,所以 -1 “Pete”在数组中,但不在索引 2 处或之后,所以 -1
【讨论】:
【参考方案5】:不用 jQuery 也可以做到:
if(array1.indexOf(num1) >= 0)//if -1, then not found
【讨论】:
请注意,IE8 或更低版本不支持Array.prototype.indexOf
。
是的,但是 IE8 是很老的浏览器。没有人支持。
为大公司工作或支持大公司。他们中的一些人仍然使用 IE7,其中许多人卡在 IE8 上。我经常需要在工作中为我们的客户支持 IE8。【参考方案6】:
您不需要使用 jQuery。这是一个名为indexOf
的内置函数:
if ( arr.indexOf(item) !== -1 )
// item is in array
【讨论】:
请注意,IE8 或更低版本不支持Array.prototype.indexOf
。以上是关于jquery检查数字是不是在列表中[重复]的主要内容,如果未能解决你的问题,请参考以下文章