それは、別のオブジェクトを探しているからです。indexOf()
厳密な等値比較 (===
演算子と同様) を使用し、 [3, 0] === [3, 0]
false を返します。
手動で検索する必要があります。indexOf()
カスタム比較関数を使用するより一般的な関数を使用する例を次に示します (コメントで @ajax333221 によって提案された改善があります)。
// Shallow array comparer
function arraysIdentical(arr1, arr2) {
var i = arr1.length;
if (i !== arr2.length) {
return false;
}
while (i--) {
if (arr1[i] !== arr2[i]) {
return false;
}
}
return true;
}
function indexOf(arr, val, comparer) {
for (var i = 0, len = arr.length; i < len; ++i) {
if ( i in arr && comparer(arr[i], val) ) {
return i;
}
}
return -1;
}
var tw = [[3, 0], [11, 0], [3, 14], [11, 14]];
alert( indexOf(tw, [3, 0], arraysIdentical) ); // Alerts 0