ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で配列の等価性チェックが失敗するのはなぜですか?

JavaScript で配列の等価性チェックが失敗するのはなぜですか?

Linda Hamilton
リリース: 2024-11-09 20:14:02
オリジナル
1037 人が閲覧しました

Why Do Equality Checks Fail for Arrays in JavaScript?

配列の等価性チェックが失敗する: JavaScript パズル

JavaScript の配列は、文字列や数値のようなプリミティブとは異なり、参照型です。これは、生の値ではなくオブジェクトとしてメモリに保存されることを意味します。その結果、単純な等価演算子 == を使用した等価性チェックは、オブジェクト参照のみを比較するため、配列では失敗します。

これを理解するために、簡単な例を見てみましょう:

[1, 2] == [1, 2]; // false
ログイン後にコピー

配列には同じ要素が含まれていますが、別個のオブジェクトとみなされます。等価演算子は、変数がメモリ内のまったく同じ配列オブジェクトを参照している場合にのみ true を返します。

参照ではなく配列の内容を比較するには、より堅牢なアプローチを使用する必要があります。そのような方法の 1 つは、両方の配列を走査して、各要素の値を比較することです。ただし、これは大きな配列の場合は非効率的になる可能性があります。

もう 1 つの一般的なアプローチは、両方の配列を文字列に変換し、結果の文字列を比較することです。

[1, 2].toString() === [1, 2].toString(); // true
ログイン後にコピー

この手法は機能しますが、プロパティの順序がインスタンス間で異なる可能性があり、不正確な等価性チェックにつながる可能性があるため、カスタム オブジェクトには使用しないでください。

代わりに、カスタム オブジェクトまたは複雑なデータ構造の場合は、明示的に比較するカスタム等価関数を実装することをお勧めします。関連するすべてのプロパティ。これにより、非プリミティブ データ型の等価性をチェックするための信頼性が高く保守可能な方法が提供されます。

以上がJavaScript で配列の等価性チェックが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート