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检查数字是不是在列表中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查python列表中是不是已经存在一个数字

使用 JQuery 检查值是不是在选择列表中

如何检查一个数字是不是在列表列表中?

JQuery - 将随机数添加到数组中,然后在打印数组之前检查是不是有重复

如何检查平面列表中是不是有重复项?

查找数字是不是重复超过 4 次 - ORACLE SQL