0

私が持っていると言う:

a=[[1,2],[3,4],[5,6]]

これは間違っていますか?

a.indexOf([1,2])

なぜ-1?

4

2 に答える 2

0

なぜなら[1,2] == [1,2]_false

javascriptオブジェクトの異なるインスタンスの同等性はありません。

MDNから==:_

両方のオペランドがオブジェクトの場合、JavaScriptは、オペランドがメモリ内の同じオブジェクトを参照するときに等しい内部参照を比較します。

配列内の配列を検索する独自の関数を作成することもできますが、この場合、内部配列のすべての要素をチェックする(またはハッシュコードを作成する)必要があるため、これは高速ではありません。この種の検索は避けたほうがよいでしょう。

于 2013-01-19T17:08:47.990 に答える
0

JAVASCRIPTで配列を比較することはできません!

等価条件をチェックすると、JavaScript配列は基本的にオブジェクトから継承されます。これらの2つのオブジェクトの内部参照は異なり、すべての要素が同じであっても-1を返します。

したがって、.indexOfを呼び出すと、失敗する配列が比較されるため、-1が得られます。

配列とそのサブ配列が等しいかどうかを深くチェックする独自の関数を作成する必要があります。または、_。jsなどのライブラリを使用できます。

于 2013-01-19T17:10:55.293 に答える