2010-11-01 86 views
2

我在一个数组中有一个或多个项目,对于这个例子我们假设它们是[65, 66, 67]如果有条件检查匹配,怎么可能(如果甚至可能的话)只做一个。如何使用JavaScript检查一个数组中的多个元素?

例如:

var keyArray = [65, 66, 67]; 
if(e.keyCode == any item in keyArray){ 
    //Then do this 
} 

设法使一个jQuery插件,一个用户可以将多个键映射到单个动作。例如。按a,b或c可以提示“您正在按a,b或c”;

这里是不工作我真正的代码示例:

$this.keydown(function(e){ 
      if(e.keyCode in keySplit){ 
       if(typeof callback == 'function'){ 
        callback(); 
        e.preventDefault(); 
       } 

      } 
     }); 
+0

搜索'Array.prototype.indexOf'。例如http://stackoverflow.com/questions/1744310/how-to-fix-array-indexof-in-javascript-for-ie-browsers – 2010-11-01 09:27:20

回答

4

在现代浏览器中你有Array.indexOf方法。对于旧的浏览器是非常容易创建一个类似的方法:

if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function (searchElement) { 
    var len = this.length; 
    for (var i = 0; i < len; i++) { 
     if (this[i] === searchElement) 
     return i; 
    } 
    return -1; 
    }; 
} 

现在你有条件地定义Array.indexOf,所以它会在每个平台上可用。您的代码变成:

var keyArray = [65, 66, 67]; 
if (keyArray.indexOf(e.keyCode) > -1) { 
    //Then do this 
} 

的注意,如果你想完全复制Array.indexOf,请参阅:MDC indexOf

1

的“中”经营者只看到按键,而不是值,和的钥匙[65,66,67]当然是[0,1,2]。所以,你会检查使用:


var keyArray = {65:65, 66:66, 67:67}; 
if (e.keyCode in keyArray) { 
// whatever 
} 

的keyArray可能也被{65: “” 66 “” 67 “”};再次,它是重要的键值对。

+1

galambalazs的回答比较好。我不知道JavaScript中的Array.indexOf。 – 2010-11-01 09:42:41

相关问题