ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript での配列の比較に「==」が機能しないのはなぜですか?

JavaScript での配列の比較に「==」が機能しないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-10 16:39:03465ブラウズ

Why Doesn't `==` Work for Comparing Arrays in JavaScript?

配列の等価性チェックが失敗する理由

JavaScript では、配列が次のように見える場合でも、配列間の等価性チェック (==) が false を返します。同一の要素が含まれています。この動作は、値が等しいという直感的な期待に反します。

配列の性質を理解する

JavaScript 配列はプリミティブ データ型ではなく、オブジェクトです。 == を使用して 2 つの配列を比較する場合、演算子は両方の配列の内容が等しいかどうかではなく、両方の配列がまったく同じインスタンスであるかどうかをチェックします。

配列の内容を比較する方法

2 つの配列の内容が同じかどうかを判断するには、対応する各要素を明示的に比較する必要があります。これを行う簡単な関数を次に示します。

function arraysEqual(arr1, arr2) {
  if (arr1.length != arr2.length) {
    return false;
  }
  for (let i = 0; i < arr1.length; i++) {
    if (arr1[i] != arr2[i]) {
      return false;
    }
  }
  return true;
}

JSON.stringify() Fallacy

JSON.stringify() を使用して両方の配列を JSON 文字列に変換することを提案する人もいます。そして文字列を比較します。これは特定のシナリオでは機能する可能性がありますが、信頼できる解決策ではありません。 JSON.stringify() は、結果の文字列内でオブジェクト プロパティの順序を維持します。これは実装の詳細によって異なる場合があります。この不一致により、等価性チェックで偽陰性が発生する可能性があります。

ベスト プラクティス

配列の内容を確実に比較するには、すべての要素を反復処理するカスタム関数を作成することをお勧めします。そして明示的に等価性をチェックします。このアプローチにより、配列比較の精度と堅牢性が保証されます。

以上がJavaScript での配列の比較に「==」が機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。