地図
JavaScriptを(オブジェクト)のオブジェクトは、基本的にキーと値のペアのコレクションですが、唯一の文字列のキー名を指定して行うこと。これは、その使用は大きな制限で提供します。
この問題を解決するために、ES6は、地図データ構造を提供します。これは、オブジェクトだけでなく、キーと値のペアのセットに似ているが、「キー」の範囲は、文字列に限定されるものではなく、(オブジェクトを含む)の値の各種のキーとして使用することができます。
つまり、オブジェクトの構造を提供 - 対応を「文字列値」に、マップ構造を提供 - JSONデータ構造のよりよい実現の「値」に相当します。
あなたは、「データ構造の」より多くの「リラックス」キーを必要とする場合、地図は、より多くのオブジェクトより適切な。
特長:キーと値のペア=>問題マッピングニーズを持つ任意の型=>よりよい取り引き。
地図を作成します。
自身地図コンストラクタを使用する場合、データの初期化パラメータを渡すことによって、コンストラクタです。
M =ましょう新しい)地図(;
マップ機能を初期化するためのパラメータとして配列(または配列のようなオブジェクト)許容可能であり得ます。差が設定している。しかし、配列内のメンバーの地図は、ペアを表明し、キーと値のペアの配列です。
聞かせてメートル= 新しい地図([[ "名前"、 "zhangsan"]、[ "年齢"、20]]);
地図の属性
これは、共通の属性です:サイズはMapインスタンスの総会員数を返します。
聞かせてメートル= 新しい地図([[ "名前"、 "zhangsan"]、[ "年齢"、20 ]]); console.log(m.size); // 2
地図方法
使用動作(データのための操作)と(データを横断するための)トラバーサル方法の2つのカテゴリにマップ例の方法。
操作の方法:
セット(キー、値)のデータを追加または変更。設定キーの値に対応するキー、およびリターン構造自体地図
データを取得する(キー)を取得します。キー、リターンが見つからない場合はリードキーは、キーに対応する未定義
そこにデータがあると、ブール値を返すかどうかを確認するために(キー)を持っています。
データを削除する(キー)を削除します。trueを返す正常に削除
すべてのデータを消去するには()をクリアしない、ノーリターン値
ログ(delMap)。// 真 //クリアすべてのデータ map.clear(); にconsole.log(MAP); // マップ(0){}
トラバーサル方法:
地図は、3つの機能を提供し、トラバースは、トラバース・メソッドを生成します。
キー()キー名を返すイテレータ
値()イテレータのキーを返します
エントリは()キーと値のペアのイテレータを返します。
各部材トラバースのforEach()コールバック関数
numは=せて新しいマップ([ "1"、1]、[ "2"]、[2]、[ "3"、3 ])。 用{(num.keys()の鍵せ) にconsole.log(キー)。 } // 1 // 2 // 3 のための(LET num.values()の値){ にconsole.log(値)。 } // 1 // 2 // 3 のために{(num.entriesの項目()とする) はconsole.log(項目[ 0]、項目[1 ])。 } // か1 // 2 2 // 3 3 // 将上面代码通过解构优化 用{(num.entriesの[キー値]()とする) にconsole.log(キー、値)。 } // か1 // 2 2 // 3 3 num.forEach((値、キー)=> { にconsole.log(値、キー) }) // 1 1 // 2 2 // 3 3
他のデータ構造と互換
配列にマップ
最も便利な方法の配列にマッピングすることは、拡張演算子を使用することです....
= MYMAPせ、新たな新)(地図; MYMAP .SET(trueに、 "真" ) .SET(偽、 "偽"); // それぞれが新しいマップを返しますので、書き込みに取り付けることができる にconsole.log(MYMAP); / / {真=> "真"、偽=> "偽"へ} LET NEWMAP = [... MYMAP]; にconsole.log(NEWMAP); // ] [trueに、 "真"、[偽、 "偽" ]]
地図への配列
コンストラクタで渡された配列の地図は、あなたは地図を回すことができます。
= [[着てみましょう本当の "真"]、[ 偽を、 "假" ]]; マップを聞かせて = 新しい地図(ARR)。 console.log(マップ)// {真=> "真"、偽=> "假"}
オブジェクトにマップ
地図すべてのキーが文字列である場合、それがオブジェクトに変換することができます。
関数strMapToObj(strMap){ OBJせ = {}; 用{([K、V] strMapのせ)、 OBJ [K] = ; V } 戻りOBJ。 } せMYMAP = 新しいマップ()セット( "緑"、 "绿").SET( "赤"、 "红"。 )。 console.log(MYMAP)。// { "グリーン" => "绿"、 "赤" => "红"} はconsole.log(strMapToObj(MYMAP))。// {緑: "绿"赤"红"}
地図にオブジェクト
機能objToStrMap(objが){ strMapましょう = 新しい地図(); 用(項目せにおけるOBJ)を{ strMap.set(項目、OBJ [アイテム]) } 戻りstrMap。 } OBJましょう "zhangsan"、年齢:= {名前20 }。 console.log(objToStrMap(OBJ))。 // { "名" => "zhangsan"、 "年齢" => 20}