[解決済み] JavaScriptにおけるマップとオブジェクトの比較
質問
私はちょうど この機能 :
地図 Mapオブジェクトは単純なキー/バリューマップです。
それは困りましたね。通常のJavaScriptオブジェクトはディクショナリなのに、どうして
Map
辞書とは違うのでしょうか?概念的には同じです。
Stack Overflowの別の質問
)
ドキュメントも役に立ちません。
<ブロッククオートMap オブジェクトはキーと値のペアのコレクションで、キーと値の両方が任意の ECMAScript 言語値である可能性があります。明確なキー値は、Map のコレクション内の 1 つのキー/値ペアにのみ発生します。マップが作成されるときに選択される比較アルゴリズムを使用して、区別されたキー値が識別されます。
Mapオブジェクトは、その要素を挿入順に反復することができます。Map オブジェクトは、ハッシュテーブルか、平均してコレクション内の要素数に比例したアクセス時間を提供する他のメカニズムを使用して実装されなければなりません。このMapオブジェクトの仕様で使用されるデータ構造は、Mapオブジェクトの必要な観察可能なセマンティクスを記述することだけを目的としています。実行可能な実装モデルであることは意図していない。
...私にはまだオブジェクトのように聞こえるので、明らかに私が何かを見逃しているようです。
なぜJavaScriptは(十分にサポートされている)得に
Map
オブジェクトを作成することができます。それは何をするものですか?
どのように解決するのですか?
MDNによると
<ブロッククオート
Mapオブジェクトは、その要素を挿入順に反復することができます。
for..of
ループは各反復に対して[key, value]の配列を返します。
そして
オブジェクトはマップと似ていて、どちらもキーに値を設定することができます。 その値を取得し、キーを削除し、何かがあるかどうかを検出します。 に格納される。このため、ObjectはMap しかし、オブジェクトとオブジェクトの間には重要な違いがあります。 とマップは、マップを使う方が良い。
オブジェクトはプロトタイプを持つので、マップにはデフォルトのキーが存在します。 しかし、map = Object.create(null) を使用すると、これを回避することができます。また Objectのキーは文字列で、Mapの場合は任意の値になります。 Mapの場合、手動でサイズを管理する必要がありますが、Mapの場合は簡単にサイズを取得することができます。 オブジェクトのサイズを追跡することができます。
順番に繰り返せるというのは、どのブラウザでも同じパフォーマンスが得られるということもあり、開発者が長い間望んでいた機能です。ですから、私にとっては大きなポイントです。
その
myMap.has(key)
メソッドは特に便利でしょうし、また
myMap.size
プロパティを使用します。
関連
-
fetch ネットワークリクエストラッパーの説明例
-
JavaScriptの配列共通メソッド解説
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vueディレクティブv-bindの使用と注意点
-
vueにおけるfilterの適用シーンについて解説します。
-
Vueのフィルタの説明
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】ExpressJS : res.redirect()が期待通りに動かない?
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
JavaScriptのStringに関する共通メソッド