jquery check if number is in a list
本问题已经有最佳答案,请猛点这里访问。
我必须检查一个变量是否等于一个给定的数字。例如,我现在正在做这个。
1 2 3 4 5 | if (num == 1 || num == 3 || num == 4 || etc.) { // Do something } else if (num == 2 || num == 7 || num == 11 || etc.) { // Do something } |
我认为应该有一个更简单的方法。例如,每个if语句的所有数字的数组。
1 2 | var array1 = [1,3,4,5,6,8,9,10 etc.] var array2 = [2,7,11,12,13,14 etc.] |
然后看看这个数字是否等于这些数组中的任何一个。但我不知道怎么做……
indexof()方法在数组中搜索指定项,并返回其位置。
1 2 | var array1 = [1,3,4,5,6,8,9,10]; var a = array1.indexOf(46); //a = -1; if not found |
如果需要支持没有.indexof()的环境,可以实现MDN修复。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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; }; } |
因为您在请求jquery,所以有.inarray()。这将返回一个
您不需要使用jquery。这是一个名为
1 2 3 | if ( arr.indexOf(item) !== -1 ) { // item is in array } |
您可以在没有jquery的情况下执行此操作:
1 | if(array1.indexOf(num1) >= 0)//if -1, then not found |
您可以使用
1 2 3 4 5 6 | 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)); |
输出:
"约翰"在3点找到4在0找到找不到"卡尔",所以-1"pete"在数组中,但不在索引2处或之后,所以-1
为什么不做一个简单的for循环呢?
1 2 3 4 5 6 7 8 | for(var i = 0; i < array1.length; i++) { if(array[i] == num) { // do something break; } } |