我发现至少在IE6中(我不确定更近期的版本),内置的Array类型没有indexOf方法。如果你在IE中测试,可能这就是为什么你无法开始的原因。我写了这个小补充来包含在我的所有代码中:
if(!Array.prototype.indexOf){
Array.prototype.indexOf = function(obj){
for(var i=0; i<this.length; i++){
if(this[i]===obj){
return i;
}
}
return -1;
};
}
我并不是真正的功臣。这可能是我在某个教程或Doug Crockford的文章中找到的一个相当通用的代码片段。我非常确定,有人会想出更好的编写方式。
我发现在Firefox中工作是一个很好的开始,因为你可以安装Firebug控制台,从而更好地了解哪里出了问题。我承认,这并不能解决跨浏览器的问题,但至少它让你有了一个项目的开端。
这个小代码片段将确保您可以使用indexOf方法在一维数组中查找给定值的位置。对于您的二维数组,外部数组中的每个元素都是一个数组,而不是单个值。我将进行一些测试,看看它的确切工作方式,并回复您,除非有人提供更好的答案。
希望这至少能让你有所启发。
更新
假设您有一个实现了Array.indexOf的浏览器,我已经尝试了各种方式来传递您外部数组中的数组元素之一。
alert(array.indexOf([3,56]))
alert(array.indexOf("3,56"))
只需返回-1。
奇怪的是,
alert(array.indexOf(array[1]))
正确返回1。但是你需要知道内部数组的索引才能获取索引!我看不到将数组传递给indexOf方法的方法。
$.filter
。 - RaynosindexOf
返回0
(数组中的第一个元素),它仍将触发true
,因为~
将0
转换为-1
,第一个!
将-1
转换为布尔值false
,第二个!
将false
值转换为true
。 步骤在此处显示(http://jsbin.com/EziLogA/1/edit?js,console)。 - rsacc