質問: JavaScript では、セットの動作をエミュレートするデータ構造を作成できます。次の機能:
このセットのような機能を実現するための最良のアプローチは何ですか?プロパティと値をすべて true に設定したキーを格納したオブジェクトを使用するのは合理的な解決策ですか?
回答:
ES6 環境では、必要な機能をすべて提供する組み込みの Set オブジェクト。
ES5 以下の場合:
オブジェクトの使用:
値を表すキーと値が常に true に設定されたオブジェクトの作成は、単純なタスクでは機能しますが、制限があります。たとえば、より簡潔な if (key in obj) の代わりに if (obj[key]) を使用して真実性をチェックする必要があります。さらに、このアプローチではすべてのキーが文字列に強制されるため、個別に動作する必要がある数値キーと文字列キーの両方がある場合に問題が生じます。
これらの問題のいくつかに対処する、この修正されたオブジェクトベースのソリューションを検討してください。
// create empty object var obj = {}; // or create an object with some items already in it var obj = { "1": true, "2": true, "3": true, "9": true }; // Question 1: Is A in the list? if (Object.prototype.hasOwnProperty.call(obj, A)) // put code here // Question 2: Delete 'A' from the list if it's there delete obj[A]; // Question 3: Add 'A' to the list if it's not already there obj[A] = true;
事前構築されたセット オブジェクト:
既製のソリューションを好む場合は、miniSet などの事前構築されたセット オブジェクトや、より機能豊富なセット オブジェクトを利用できます。 。これらは、セット操作を実行するための簡単なインターフェイスを提供します。
ES6 Set Polyfill:
ES6 との互換性のために、ES6 Set ポリフィルのようなポリフィルを使用できます。これにより、IE7 までの環境で機能する ES6 互換のコードを作成できますが、ネイティブ ES6 Set オブジェクトの使いやすさを完全には把握できません。
以上がJavaScript で Set のような機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。