在Array中搜索值

Joh*_*ith 0 javascript jquery

我需要检查数组中是否包含某些特定值.我可以这样:

if($.inArray('Z', arr) != -1){
  ..
}else if($.inArray('A', arr) != -1){
  ..
}else if($.inArray('G', arr) != -1){
  ..
}else if($.inArray('T', arr) != -1){
......
Run Code Online (Sandbox Code Playgroud)

或者更短:

if($.inArray('Z', arr) != -1) || ($.inArray('A', arr) != -1) || ($.inArray('G', arr) != -1) ||($.inArray('T', arr) != -1) ... {
Run Code Online (Sandbox Code Playgroud)

但是我的代码有更短的版本吗?谢谢

Aln*_*tak 8

您可以使用Array.prototype.some迭代数组并检查数组中的任何元素是否与给定谓词匹配:

var found = arr.some(function(s) {
    return s.match(/^[ZAGT]$/);
});
Run Code Online (Sandbox Code Playgroud)

如果您不注意使用正则表达式,请将中间行替换为:

return s === 'Z' || s === 'A' || s === 'G' || s === 'T';
Run Code Online (Sandbox Code Playgroud)

好的特点.some是,一旦发现任何匹配,它就会突破其内部循环.