我发现至少在 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 方法的方法。