假设我有这个:

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

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


当前回答

function in_array(needle, haystack){
    var found = 0;
    for (var i=0, len=haystack.length;i<len;i++) {
        if (haystack[i] == needle) return i;
            found++;
    }
    return -1;
}
if(in_array("118",array)!= -1){
//is in array
}

其他回答

if(array.indexOf("67") != -1) // is in array

为什么不用array。filter呢?

var array = ['x','y','z'];
array.filter(function(item,index,array){return(item==YOURVAL)}).

只需将其复制到代码中,就可以了:

Array.prototype.inArray = function (searchedVal) {
return this.filter(function(item,index,array){return(item==searchedVal)}).length==true
}

根据可用的JavaScript版本,你可以使用indexOf:

返回数组中给定元素所在的第一个索引,如果不存在则返回-1。

或者一些:

测试数组中的某些元素是否通过了所提供函数实现的测试。

但是,如果你做了这种存在性检查,你会更好地使用一个对象来存储你的字符串(或者一个对象以及数组,这取决于你对你的数据做什么)。

试试这个:

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

我认为最简单的方法是:

(118 in blockedTile); //is true