假设我有这个:
var blockedTile = new Array("118", "67", "190", "43", "135", "520");
还有更多的数组元素,但出于可读性考虑,这些元素很少。无论如何,我可以做一个“for”循环,但每次你点击地图时,它会做500个循环……有没有其他方法来查看某个字符串是否在数组中?
假设我有这个:
var blockedTile = new Array("118", "67", "190", "43", "135", "520");
还有更多的数组元素,但出于可读性考虑,这些元素很少。无论如何,我可以做一个“for”循环,但每次你点击地图时,它会做500个循环……有没有其他方法来查看某个字符串是否在数组中?
当前回答
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
}
我这边的一小段代码(数组的自定义函数):
Array.prototype.in_array = function (array) {
var $i = 0;
var type = typeof array;
while (this[$i]) {
if ((type == ('number') || type == ('string')) && array == this[$i]) {
return true;
} else if (type == 'object' && array instanceof Array && array.in_array(this[$i])) {
return true
}
$i++;
}
return false;
};
var array = [1, 2, 3, "a", "b", "c"];
//if string in array
if (array.in_array('b')) {
console.log("in array");
}
//if number in array
if (array.in_array(3)) {
console.log("in array");
}
// if one from array in array
if (array.in_array([1, 'b'])) {
console.log("in array");
}
试试这个:
if(blockedTile.indexOf("118") != -1)
{
// element found
}
var myArray = [2,5,6,7,9,6];
myArray.includes(2) // is true
myArray.includes(14) // is false
我认为最简单的方法是:
(118 in blockedTile); //is true