配列の等価性チェックが失敗する: JavaScript パズル
JavaScript の配列は、文字列や数値のようなプリミティブとは異なり、参照型です。これは、生の値ではなくオブジェクトとしてメモリに保存されることを意味します。その結果、単純な等価演算子 == を使用した等価性チェックは、オブジェクト参照のみを比較するため、配列では失敗します。
これを理解するために、簡単な例を見てみましょう:
[1, 2] == [1, 2]; // false
配列には同じ要素が含まれていますが、別個のオブジェクトとみなされます。等価演算子は、変数がメモリ内のまったく同じ配列オブジェクトを参照している場合にのみ true を返します。
参照ではなく配列の内容を比較するには、より堅牢なアプローチを使用する必要があります。そのような方法の 1 つは、両方の配列を走査して、各要素の値を比較することです。ただし、これは大きな配列の場合は非効率的になる可能性があります。
もう 1 つの一般的なアプローチは、両方の配列を文字列に変換し、結果の文字列を比較することです。
[1, 2].toString() === [1, 2].toString(); // true
この手法は機能しますが、プロパティの順序がインスタンス間で異なる可能性があり、不正確な等価性チェックにつながる可能性があるため、カスタム オブジェクトには使用しないでください。
代わりに、カスタム オブジェクトまたは複雑なデータ構造の場合は、明示的に比較するカスタム等価関数を実装することをお勧めします。関連するすべてのプロパティ。これにより、非プリミティブ データ型の等価性をチェックするための信頼性が高く保守可能な方法が提供されます。
以上がJavaScript で配列の等価性チェックが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。