假设我有这个:

var blockedTile = new Array("118", "67", "190", "43", "135", "520");

还有更多的数组元素,但出于可读性考虑,这些元素很少。无论如何,我可以做一个“for”循环,但每次你点击地图时,它会做500个循环……有没有其他方法来查看某个字符串是否在数组中?


当前回答

您可以尝试下面的代码。检查http://api.jquery.com/jquery.grep/

var blockedTile = new Array("118", "67", "190", "43", "135", "520");
var searchNumber = "11878";
arr = jQuery.grep(blockedTile, function( i ) {
  return i === searchNumber;
});
if(arr.length){ console.log('Present'); }else{ console.log('Not Present'); }

检查加勒比海盗。长度大于0表示字符串存在,否则不存在。

其他回答

试试这个:

if(blockedTile.indexOf("118") != -1)
{  
   // element found
}

在数组的例子中,它在php (in_array)中是一样的

 var ur_fit = ["slim_fit", "tailored", "comfort"];
 var ur_length = ["length_short", "length_regular", "length_high"];
    if(ur_fit.indexOf(data_this)!=-1){
        alert("Value is avail in ur_fit array");
    }
    else if(ur_length.indexOf(data_this)!=-1){      
         alert("value is avail in ur_legth array"); 

    }
var myArray = [2,5,6,7,9,6];
myArray.includes(2) // is true
myArray.includes(14) // is false

使用Underscore.js

它跨浏览器兼容,并可以执行二进制搜索,如果您的数据已排序。

_ indexOf。

_。indexOf(array, value, [isSorted])返回可以在数组中找到value的索引,如果value在数组中不存在,则返回-1。 除非缺少indexOf函数,否则使用本机indexOf函数。如果你 处理一个大数组,你知道数组已经 为isSorted传递true以使用更快的二分搜索。

例子

//Tell underscore your data is sorted (Binary Search)
if(_.indexOf(['2','3','4','5','6'], '4', true) != -1){
    alert('true');
}else{
    alert('false');   
}

//Unsorted data works to!
if(_.indexOf([2,3,6,9,5], 9) != -1){
    alert('true');
}else{
    alert('false');   
}

我认为最简单的方法是:

(118 in blockedTile); //is true