如何检查数组是不是包含元素[重复]

Posted

技术标签:

【中文标题】如何检查数组是不是包含元素[重复]【英文标题】:How to check whether an array contains an element [duplicate]如何检查数组是否包含元素[重复] 【发布时间】:2013-02-20 08:08:15 【问题描述】:

我想限制可以按下的键。

$('.txtComments').keydown(function (event) 
  var keys = new Array();
  keys[0] = "8";
  keys[1] = "46";
  keys[2] = "37"
  keys[3] = "39"

  if(!(....)) //Check whether the keyCode is either of 8, 46, 37, or 39. 
  
     event.preventDefault();  
  
);

感谢您的帮助

【问题讨论】:

var keys = [8,46,37,39];,那么你可以使用$.inArrayevent.which 尝试使用$.inArray 做个好人。停止投票。谢谢。 【参考方案1】:

这里最简单(也是最快)的方法是使用对象作为地图:

   var keys = ;
   keys[8] = true;
   ...

   if (!keys[event.which]) 
     ...

请注意,为了更好的兼容性,我建议使用event.which 而不是键码。

【讨论】:

【参考方案2】:

所以有很多方法可以实现这一点:

只需硬编码:

var keyCode = event.which;

if (keyCode != 8 && keyCode != 46 ...)

或检查一个数组:

var keys = [8, 46, ...];
if (keys.indexOf(keyCode) < 0)

或 jQuery 等价物:

if ($.inArray(keyCode, keys) < 0)

或检查一个对象:

var keys =  8: 1, 46: 1, ... 
if (! (keyCode in keys) )  // or if (!keys[keyCode])

或开关:

switch (keyCode) 
    case 8: case 46: ...
        // do nothing
        break;
    default:
        event.preventDefault();

【讨论】:

【参考方案3】:

jQuery 提供了实用方法jQuery.inArray() 来检查数组是否包含值。

【讨论】:

【参考方案4】:

if(!keys.in_array(event.keyCode));

并将您的 keydown 更改为 keypress

<script type="text/javascript">
// Benoit Asselin - http://www.ab-d.fr
Array.prototype.in_array = function(p_val) 
    for(var i = 0, l = this.length; i < l; i++) 
        if(this[i] == p_val) 
            return true;
        
    
    return false;

</script>

【讨论】:

【参考方案5】:

你可以使用:-

   var keys = [];
    keys[8] = keys[4] = keys[37] = keys[39] = true;

if(keys[keyval])


【讨论】:

以上是关于如何检查数组是不是包含元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串是不是包含数组的任何元素[重复]

如何检查数组中之前是不是出现过元素[重复]

如何检查一个数组是不是包含另一个数组的任何元素

如何检查字符串是不是包含数组中的任何元素[关闭]

Java - 如何检查字符串是不是包含字符串数组的元素?

检查可选数组是不是包含元素和显示视图