ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で Set のような機能を実現するにはどうすればよいですか?

JavaScript で Set のような機能を実現するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 06:56:30352ブラウズ

 How to Achieve Set-Like Functionality in JavaScript?

JavaScript でセットを模倣しますか?

質問: 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 サイトの他の関連記事を参照してください。

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