在Array中搜索值

时间:2014-09-07 10:14:07

标签: 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){
......

或者更短:

if($.inArray('Z', arr) != -1) || ($.inArray('A', arr) != -1) || ($.inArray('G', arr) != -1) ||($.inArray('T', arr) != -1) ... {

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

3 个答案:

答案 0 :(得分:8)

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

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

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

return s === 'Z' || s === 'A' || s === 'G' || s === 'T';

.some的一个很好的功能是,只要找到任何匹配,它就会突破其内部循环。

答案 1 :(得分:3)

您可以添加原型函数并使用循环来处理它:

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

    return false;
}

var arr = [1,2,34,5,6];
console.log(arr.any([3,15])); // false
console.log(arr.any([3,5])); // true

答案 2 :(得分:0)

如果您正在尝试在数组中查找元素以检查它是否存在,则可以使用indexOf javascript函数。

arr.indexOf("A")

这当然会返回元素“A”的索引(如果包含)和-1(如果不包含)。

也许我误解了:)