ECMAScript6 におけるマップマッピングの基本概念と一般的な方法

ECMAScript6 におけるマップマッピングの基本概念と一般的な方法

Map は、ECMAScript 6 仕様で導入されたデータ構造です。これは、他のプログラミング言語の辞書やハッシュ テーブルと同様に、キーと値のペアのリストを保存する便利な方法です。

マッピングとは何か

Javascript オブジェクトは基本的にキーと値のペア (ハッシュ構造) のコレクションですが、従来はキーとして使用できるのは文字列のみであるため、その使用は大きく制限されます。この問題を解決するために、ECMAScript 6 では Map データ構造が導入されました。オブジェクトに似ており、キーと値のペアの集合でもありますが、「キー」の範囲は文字列に限定されず、あらゆるタイプの値(オブジェクトを含む)をキーとして使用できます。つまり、オブジェクト構造は「文字列と値」の対応を提供し、マップ構造は「値と値」の対応を提供します。これは、ハッシュ構造のより完全な実装です。

Map の基本的な使い方を理解するために、簡単な例を見てみましょう。

//マップインスタンスを宣言する const page_info = new Map()
// マップに要素を追加する page_info.set("seo", {
    "キーワード": "devpoint、マップ",
    "description":"Map オブジェクトは単純なキー/値マッピングであり、キーと値は何でも (プリミティブまたはオブジェクト) にすることができます。"
})
page_info.set("タイトル", "javascript es6 マップ")
コンソール.log(ページ情報) 
console.log(typeof page_info) // オブジェクト

出力は次のようになります。

地図 {
  'seo' => {
    キーワード: 'devpoint、Map'、
    説明: 「Map オブジェクトは、キーと値が何でも (プリミティブ値またはオブジェクト値) になる単純なキー/値マッピングです。」
  },
  'title' => 'JavaScript ES6 のマップ マッピング'
}
物体

出力結果から判断すると、Map は本質的にオブジェクトです。

オブジェクトとマップの違い

Object と Map の類似点は、どちらもキーによって値を保存および取得し、キーを削除できることです。両者は非常によく似ていますが、違いは次のとおりです。

マップの共通メソッド

よく使用される Map メソッドには、set(key, value) の割り当て、get(key) の取得、指定されたキー名とそれに対応する値の削除 (delete(key))、has(key) の存在の確認、すべての値の取得 (values())、キー/値の反復子 (entries())、トラバーサル (forEach())、すべてのキー/値のペアのクリア (clear()) などがあります。

宣言と初期化

新しい Map を作成します。
console.log(new_map); //出力: Map {}

割り当てセット

割り当てでは map.set(key,value) を使用します。これを使用して、新しいキー/値のペアを追加したり、キー/値のペアを変更したり、Map オブジェクト全体を返したりできます。

const page_info = 新しいマップ()
// 値を設定する page_info.set("seo", {
    "キーワード": "devpoint、マップ",
    "description":"Map オブジェクトは単純なキー/値マッピングであり、キーと値は何でも (プリミティブまたはオブジェクト) にすることができます。"
});
コンソールログ(ページ情報);
page_info.set("seo", "seo情報");
コンソールログ(ページ情報);

上記の例では、値を増分し、値を変更します。

地図 {
  'seo' => {
    キーワード: 'devpoint、Map'、
    説明: 「Map オブジェクトは、キーと値が何でも (プリミティブ値またはオブジェクト値) になる単純なキー/値マッピングです。」
  }
}
マップ { 'seo' => 'seo 情報' }

キー値を取得する

キー値を取得するには、get(key) を使用します。取得した key->value が存在しない場合は、undefined を返します。

const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
定数title = page_info.get("title");
seo_info は page_info.get("seo");
console.log(title); //javascript es6 マップ マッピング console.log(seo_info); //未定義

キー値を削除削除

map.delete(key) は、指定されたキーのキーと値のペアを削除し、成功または失敗の結果を返します。削除が成功した場合は true が返され、それ以外の場合は false が返されます。

const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
page_info.set("author", "devpoint");
console.log(page_info); // マップ { 'title' => 'javascript es6 マップ マッピング', 'author' => 'devpoint' }

const delete_author = page_info.delete("author");
seo を削除します。
console.log(deleted_author); // 真
console.log(deleted_seo); // 偽
console.log(page_info); // マップ { 'title' => 'javascript es6 マップ マッピング' }

キー値が存在するかどうかを判定する

指定されたキーが存在するかどうかを確認するには、map.has(key) を使用します。

const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
console.log(page_info); // マップ { 'title' => 'javascript es6 マップ マッピング' }

console.log(page_info.has("title")); // 真
console.log(page_info.has("seo")); // 偽

すべてのキー値を取得する()

const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
page_info.set("author", "devpoint");
console.log(page_info.values()); // [マップイテレータ] { 'javascript es6 マップマッピング', 'devpoint' }

キー/値イテレータエントリ()

map.entries() を使用して、Map オブジェクト内の各 [key, value] 配列を含む Iterator を返します。

const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
page_info.set("author", "devpoint");
console.log(page_info.entries());

出力は次のようになります。

[マップエントリ] {
['title', 'JavaScript ES6 のマップ マッピング'],
[ '著者', 'devpoint' ]
}

すべてのキー値を反復処理する forEach(callback)

const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
page_info.set("author", "devpoint");
page_info.forEach((値,キー)=>{
    console.log(キー、値);
});

出力は次のようになります。

タイトル javascript es6 マップ マッピング
著者 devpoint

マップ内のすべてのキー値をクリアするclear()

マップ内のすべてのキーと値のペアをクリアするには、map.clear() を使用します。

const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
page_info.set("author", "devpoint");
ページ情報をクリアします。
console.log(page_info); // マップ {}

他のデータ構造との変換

配列にマップ

マップを配列に変換する最も便利な方法は、スプレッド演算子を使用することです...

const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
page_info.set("author", "devpoint");
console.log([...page_info]); // [ [ 'title', 'javascript es6 マップ マッピング' ], [ 'author', 'devpoint' ] ]

オブジェクトへのマッピング

関数 mapToObj(map) {
    オブジェクトを作成します。
    map.forEach((v,k)=>{
        定数vは、
    });
    obj を返します。
}
const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
page_info.set("author", "devpoint");

console.log( mapToObj(page_info)); 

出力は次のようになります。

[オブジェクト: null プロトタイプ] {
タイトル: 「JavaScript ES6 のマップ マッピング」
著者: 'devpoint'
}

配列からマップへ

配列を Map コンストラクターに渡すだけです (つまり、new Map(array))。

定数ページ情報 = [
    ["title","JavaScript ES6 のマップ マッピング"],
    ["著者","開発ポイント"]
];
console.log(new Map(page_info)); // Map { 'title' => 'javascript es6 map マッピング', 'author' => 'devpoint' }

マップするオブジェクト

オブジェクトは Object.entries() を通じてマップに変換されます。

定数ページ情報 = {
    タイトル:"JavaScript ES6 のマップ マッピング",
    著者:"devpoint"
};
console.log(new Map(Object.entries(page_info))); // Map { 'title' => 'javascript es6 map マッピング', 'author' => 'devpoint' }

JSONにマップ

マップをJSONに変換するには、まずマップをオブジェクトに変換し(上記のmapToObj)、次にJSON.stringifyメソッドを使用します。

関数 mapToObj(map) {
    オブジェクトを作成します。
    map.forEach((v,k)=>{
        定数vは、
    });
    obj を返します。
}
関数 mapToJson(map){
    JSON.stringify(mapToObj(map)) を返します。
}
const page_info = 新しい Map();
page_info.set("title", "javascript es6 マップ マッピング");
page_info.set("author", "devpoint");
console.log( mapToJson(page_info)); // {"title":"javascript es6 マップ マッピング","author":"devpoint"}

要約する

これで、ECMAScript6 の Map マッピングの基本概念と一般的な方法についての記事は終了です。ECMAScript6 の Map マッピングに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript でのハッシュマップマッピング構造の実装の詳細な説明

<<:  MySQL 5.7 でパスワードを忘れた場合の解決方法の詳細な説明

>>:  Linux デバイスに空き容量がありません inode の満杯により 500 エラーが発生します

推薦する

html オプション 無効 選択 選択 無効 オプションの例

コードをコピーコードは次のとおりです。 <選択> <オプション値="&q...

Ubuntu 20.04 LTSの詳細なインストール履歴

この記事では、USB ブート ディスクの作成とシステムのインストールについて説明します。システム構成...

nginx を使用して特定のインターフェース (URL) をブロックする方法

1. はじめに場合によっては、Web プラットフォームがオンラインになった後、サービス インターフェ...

Tomcat を IDEA にダウンロード、インストール、デプロイするチュートリアル (IDEA の 2 つのホット デプロイ設定方法付き)

目次Tomcat ダウンロードチュートリアルTomcat インストールチュートリアルTomcat の...

MySQLリモート接続権限の詳細な説明

1. MySQLデータベースにログインするmysql -u ルート -pユーザーテーブルを表示する ...

WIN10 での JDK インストールと環境変数の設定手順 (詳細版)

目次1. JDKをダウンロードする(例としてjdk1.8.0を使用する) 2. JDK をインストー...

MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。

マスタースレーブレプリケーションがなぜ必要なのでしょうか? 1. 複雑な業務システムでは、SQL 文...

Javascript を使用して、スライドバー効果のあるスライドナビゲーション プラグインを開発します。

目次1. はじめに2. 使用方法3. 開発プロセス1. モデル例2. イベントとアニメーション4. ...

MongoDB の起動エラーを解決します: 共有ライブラリのロード中にエラーが発生しました: libstdc++.so.6: 共有オブジェクト ファイルを開けません:

MongoDB を起動すると、プロンプトは次のようになります。共有ライブラリのロード中にエラーが発...

MySQL 5.7.10 winx64 のインストールと設定方法のグラフィック チュートリアル (win10)

MySQL は比較的使いやすいリレーショナル データベースです。今日は、win10 システムを再イ...

HTML でシンプルな ListViews 効果を実装するためのサンプル コード

シンプルなリストビュー効果を実現するHTML結果: CSS スタイル ファイル listviewTe...

Mac M1 での Nginx のマルチサイト構成の実装

注: nginxはbrew経由でインストールされますウェブサイトのルートディレクトリ: /opt/h...

Linuxの基本コマンドmktempの詳しい説明

mptemp は安全な方法で一時ファイルまたはディレクトリを作成します。このコマンドの適用範囲: R...

HTML に CSS を導入するいくつかの方法の紹介

目次1. HTMLタグ要素にCSSスタイルを直接埋め込む2. HTMLのheadセクションにおけるス...

要素ツリーコントロールは、ドロップダウンメニューとアイコンを統合します(ツリー+ドロップダウン+入力)

目次要件:実装手順:この記事では主に以下について説明します: カスタムツリーコントロール<el...