私は今発見したこの機能:
マップ: マップ オブジェクトは単純なキー/値マップです。
混乱しました。通常のJavaScriptオブジェクトは辞書なので、Map
辞書と違うのでしょうか?概念的には、それらは同じです(Stack Overflow の別の質問)
ドキュメントも役に立ちません:
マップ オブジェクトは、キーと値の両方が任意の ECMAScript 言語値である可能性があるキー/値ペアのコレクションです。 個別のキー値は、マップのコレクション内の 1 つのキー/値ペアにのみ出現します。 個別のキー値は、マップの作成時に選択された比較アルゴリズムを使用して区別されます。
Map オブジェクトは、挿入順に要素を反復処理できます。Map オブジェクトは、ハッシュ テーブルまたはコレクション内の要素の数に対して平均的に線形に近いアクセス時間を提供するその他のメカニズムを使用して実装する必要があります。この Map オブジェクト仕様で使用されるデータ構造は、Map オブジェクトの必要な観測可能なセマンティクスを記述することのみを目的としています。実行可能な実装モデルとなることを意図したものではありません。
…私にとってはまだ物体のように聞こえるので、明らかに何かを見逃しています。
JavaScriptが(十分にサポートされた)人気を獲得している理由Map
オブジェクトですか? それは何をするのですか?
ベストアンサー1
MDNによると:
Map オブジェクトは、挿入順に要素を反復処理できます。
for..of
ループは、各反復に対して [キー、値] の配列を返します。
そして
オブジェクトは、キーに値を設定したり、それらの値を取得したり、キーを削除したり、キーに何かが格納されているかどうかを検出したりできる点でマップに似ています。このため、オブジェクトは歴史的にマップとして使用されてきましたが、オブジェクトとマップには重要な違いがあり、マップを使用する方が適しています。
オブジェクトにはプロトタイプがあるため、マップにはデフォルトのキーがあります。ただし、map = Object.create(null) を使用するとこれを回避できます。オブジェクトのキーは文字列で、マップの場合は任意の値にすることができます。オブジェクトのサイズは手動で追跡する必要がありますが、マップのサイズは簡単に取得できます。
順序付けの反復可能性は、すべてのブラウザで同じパフォーマンスを保証するという理由から、開発者が長い間望んでいた機能です。私にとって、これは大きな機能です。
のmyMap.has(key)
方法は特に便利であり、またmyMap.size
財産。