JavaScript には組み込みの Set オブジェクトがありませんが、開発者は多くの場合、高速検索で順序付けされていない一意の値を保存する機能を必要とします。
ブール値を持つオブジェクトの使用:
質問で示唆されているように、オブジェクトはセットを模倣するために使用できます。キーは値を表し、値はすべて true (または null 以外の値) に設定されます。このアプローチでは高速な検索と削除が可能ですが、キーの数が増えると追加が遅くなります。
ES6 Set Object:
環境が ES6 をサポートしている場合 (最新のブラウザーやトランスパイルされたブラウザーなど)コード)、組み込みの Set オブジェクトを使用できます。すべてのセット操作に対して優れたパフォーマンスを発揮し、さらに要素の反復処理と文字列強制の回避が容易になります。
ポリフィルと事前構築オブジェクト:
をサポートしていない環境の場合ES6 では、「ES6-Set」などのポリフィル、または ES6 Set オブジェクトと同様の機能を提供する「miniSet」や「set.js」などの事前構築済みオブジェクトを使用できます。これらには、古いブラウザとの互換性やコード フットプリントの縮小などの利点があります。
実装の詳細:
オブジェクトの使用:
<code class="javascript">const setObj = {}; setObj["item1"] = true; if ("item1" in setObj) { // fast lookup console.log("Item found"); } delete setObj["item1"]; // fast deletion</code>
ES6 Set オブジェクトの使用:
<code class="javascript">const set = new Set(); set.add("item1"); if (set.has("item1")) { // fast lookup console.log("Item found"); } set.delete("item1"); // fast deletion</code>
ポリフィルの使用:
<code class="javascript">import Set from "es6-set"; const set = new Set(["item1", "item2"]); console.log(...set.keys()); // easy iteration</code>
Pre-構築されたオブジェクト:
<code class="javascript">const miniSet = new MiniSet("item1", "item2"); if (miniSet.has("item1")) { // fast lookup console.log("Item found"); } miniSet.remove("item1"); // fast deletion</code>
最適な選択は、特定の要件と環境で利用可能なサポートによって異なります。複雑なアプリケーションやパフォーマンスが重要なアプリケーションには、ES6 Set オブジェクトが最適です。それ以外の場合は、オブジェクト、ポリフィル、または事前に構築されたセット オブジェクトを使用すると、合理的な解決策が得られます。
以上が組み込みサポートなしで JavaScript に Set 機能を実装するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。