ES 6学習ノート--SetとMap

3138 ワード

Set
Setは重複値を含まないリストです.一般的なSet使用シーンは、ある値が存在するかどうかをチェックすることである.
Setインスタンスはnew Set()で作成する必要があり、Setコンストラクタは実際には任意の反復可能なオブジェクトをパラメータとして受信することができる.コンストラクタは反復器を使用してパラメータの値を抽出します.
Setは強制型変換を用いて値が重複しているか否かを判断しない.これは、Setが数値5と文字列「5」を同時に含み、それらを相対的に独立した項目とすることができることを意味する.
Setメソッド:
  • add()Setにアイテムを追加
  • size()Setの数をチェック
  • delete()除去値
  • has()は、値が存在するか否かを判断し、ブール値
  • を返す.
  • clear()クリアセット
  • forEach()はSet項を遍歴し、3つのパラメータ:1を受け入れるコールバック関数を入力する必要がある.Setの次の位置の値、2.最初のパラメータと同じ値(Mapのために配列内のforEach関数はパラメータを一致させる).ターゲットセット自体
  • WeakSet
    このオブジェクトは、大規模なプロジェクトでメモリの漏洩を解決するために導入されました.このタイプでは、オブジェクトの弱い参照のみを格納できますが、基本タイプの値は格納できません.
    Weak SetとSetの重要な違い:
  • WeakSetのインスタンスでは、add()、has()またはdelete()メソッドを呼び出したときに非オブジェクトのパラメータが入力されると、エラーが放出されます.
  • Weak Setは反復できないのでfor-ofサイクルでは使用できません.
  • Weak Setは、任意の反復器(例えばkeys()およびvalues()メソッド)を露出することができないため、Weak Setの内容を判断するためのプログラミング手段はない.
  • Weak SetにはforEach()メソッドがありません.
  • Weak Setにはsize属性がありません.

  • Map
    Mapは、キーに対応する値の集合です.読み込むキーを指定することで、対応する値を取得できます.Mapはキャッシュとしてよく使用され、その後迅速に取得するためにデータを格納します.タイプは、キー値のペアにシーケンステーブルがあり、キーと値は任意のタイプです.
    sizeプロパティはmapのキー値ペアの数を表します
    Map初期化
    配列をMapコンストラクタに渡し、データを使用してMapを初期化します.この配列の各項目も配列でなければなりません.内部配列の最初の項目はキーとして、2番目の項目は対応する値です.そのため、Map全体がこれらの2つの配列に埋め込まれます.
    let map = new Map([["name", "Polo"], ["age", 30]]);
    
    console.log(map.has("name"));   // true
    console.log(map.get("name"));   // "Polo"
    console.log(map.has("age"));    // true
    console.log(map.get("age"));    // 30
    console.log(map.size);          // 2
    

    Mapメソッド:
  • set(key,val)キー値ペア
  • を設定する.
  • get(key)key対応値
  • を取得
  • has(key)keyが存在するか否かを判断する
  • delete(key)削除keyおよび対応する値
  • clear()クリアmap
  • forEach(cb)cbは、3つのパラメータを受信できるコールバック関数である.Mapの次の位置の値、2.値に対応するkey,3.ターゲットMap自身
  • let map = new Map([ ["name", "Nicholas"], ["age", 25]]);
    map.forEach(function(value, key, ownerMap) {
        console.log(key + " " + value);
        console.log(ownerMap === map);
    });
    

    WeakMap
    WeakMapは、オブジェクトの弱い参照を格納する方法です.すべてのキーはオブジェクトでなければなりません.非オブジェクトのキーを使用するとエラーが放出され、これらのオブジェクトは弱い参照であり、ゴミ回収に干渉しません.Weak MapのキーがWeak Map以外に参照されていない場合、キー値ペアは削除されます.
    Weak Mapは、キー値のペアとインタラクティブに使用できる2つの追加方法しかありません.has()メソッドは、指定されたキーがMapに存在するかどうかを判断するために使用され、delete()メソッドは、特定のキー値ペアを除去するために使用される.反復できないのでclearもforEachもできません
    WeakMapを使用して、オブジェクトインスタンスにプライベートデータを格納できます.例を次に示します.
    let Person = (function() {
    
        let privateData = new WeakMap();
    
        function Person(name) {
            privateData.set(this, { name: name });
        }
    
        Person.prototype.getName = function() {
            return privateData.get(this).name;
        };
    
        return Person;
    }());
    

    このバージョンのPersonの例では、オブジェクトではなくWeak Mapを使用してプライベートデータを保存します.Personコンストラクタが呼び出されると、これをキーとしてWeak Mapにエントリが作成され、プライベート情報を含むオブジェクトは対応する値となり、name属性のみが格納されます.これをprivateDataに渡す.get()メソッドは、値オブジェクトを取得して名前属性にアクセスすることで、getName()関数からプライベート情報を抽出できます.この技術は、プライベート情報をプライベート状態に保つことができ、それに関連するオブジェクトインスタンスが破棄されると、プライベート情報も同時に破棄される.