ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript Set オブジェクト内の要素の詳細な等価比較を実現するにはどうすればよいですか?

JavaScript Set オブジェクト内の要素の詳細な等価比較を実現するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-12 05:28:02
オリジナル
388 人が閲覧しました

How Can I Achieve Deep Equality Comparison for Elements in a JavaScript Set Object?

JavaScript Set オブジェクトの等価性のカスタマイズ

ES6 (Harmony) では、新しい Set オブジェクトにその要素の参照等価性が導入されています。ただし、この動作は、オブジェクトを深く比較する場合には必ずしも適しているとは限りません。

オブジェクトの等価性に関する意図しない動作:

次のコード スニペットを検討してください:

var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]
ログイン後にコピー

可能な限り参照してください。両方のオブジェクトが同じプロパティと値を持っている場合でも、参照の等価性により、これらは別のものとみなされます。

Set オブジェクトのカスタム比較:

残念ながら、ES6 Set オブジェクトはビルドされた機能を提供しません。等価比較をカスタマイズするための -in メソッド。これを拡張して比較ロジックをオーバーライドすることも困難です。

考えられる回避策:

Set オブジェクトのカスタム比較は直接サポートされていませんが、代替のデータ構造または手法の使用を検討できます。

1.不変値オブジェクト:

応答で言及されている記事では、Set で詳細な値の比較を使用できるようにする不変値オブジェクトの使用を提案しています。ただし、これは現在 JavaScript の標準ではありません。

2.詳細な比較を行うカスタム データ構造:

Set を継承し、オブジェクト ID を使用するメソッドをオーバーライドする独自のカスタム データ構造を作成できます。ただし、これには Set 実装を完全に書き直す必要があり、大規模なセットの場合は効率的ではありません。

以上がJavaScript Set オブジェクト内の要素の詳細な等価比較を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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