我需要检查数组中是否包含某些特定值。我可以这样:
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) ... {
但是我的代码有更短的版本吗?谢谢
答案 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(如果不包含)。
也许我误解了:)