少なくとも 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 の記事の 1 つで見つけたかなり一般的なコードです。誰かがそれを書くためのより良い方法に沿って来ると確信しています。
Firebug コンソールをインストールすると、どこで問題が発生しているかをよりよく把握できるため、Firefox での作業を開始するのがよいと思います。これでクロスブラウザーの問題が解決するわけではないことは認めますが、少なくともプロジェクトを開始することはできます。
この小さなコードにより、indexOf メソッドを使用して、特定の値が 1 次元配列のどこにあるかを確認できます。2 次元配列では、外側の配列の各要素は単一の値ではなく配列です。他の誰かがより良い答えを出さない限り、それがどのように機能するかを正確に確認するために少しテストを行い、あなたに返信します.
これで少なくとも開始できることを願っています。
更新 Array.indexOf を実装するブラウザーを使用していると仮定して、配列要素の 1 つを外側の配列に渡す方法をすべて試しました。
alert(array.indexOf([3,56]))
alert(array.indexOf("3,56"))
-1 を返すだけです。
奇妙なことに、
alert(array.indexOf(array[1]))
正しく 1 を返します。ただし、インデックスを取得するには、内部配列のインデックスを知る必要があります。indexOf メソッドに配列を渡す方法がわかりません。