JavaScript セットにおけるオブジェクトの等価性のカスタマイズ
コンテキスト:
JavaScript の ES6 Set オブジェクトでは、等価性は次のようになります。オブジェクト参照を比較する === 演算子によって決定されます。このアプローチは、オブジェクトを深く比較するのには適していません。
質問:
Java の equals(Object) メソッドと同様の詳細なオブジェクト比較を可能にするために、Set オブジェクトのオブジェクトの等価性をカスタマイズするにはどうすればよいですか?
回答:
更新 (2022 年 3 月):
直接比較を可能にする不変構造であるレコードとタプルを導入する提案が進行中です。参照ではなく値によって。これは Set オブジェクトと Map オブジェクトにも拡張され、オブジェクトのコンテンツに基づいた主要な比較/検索が可能になります。
元の回答:
ES6 Set オブジェクトにはカスタマイズ可能な比較メソッドがありません。 .has()、.add()、および .delete() メソッドを拡張して詳細なオブジェクト比較を実行することはできません。
Set からカスタム オブジェクトを派生させ、前述のメソッドを深い比較でオーバーライドしようとしています。比較ロジックは、基礎となる Set オブジェクトからのサポートがないため、パフォーマンスが低下し、一致を見つけるためにブルート フォース反復が必要になります。
ES6 仕様に記載されているように、Set で等価比較を構成する機能は、実装上の問題により延期されました。 JavaScript ではデフォルトで値によって比較されるため、Set 内のプリミティブ値または不変値オブジェクトが等しいかどうかを比較することをお勧めします。
以上が深い比較のために JavaScript セットのオブジェクトの等価性をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。