先端——JavaScript進級27--ES 6のセット


データ構造:
        データ構造とはデータを格納する構造である. 配列、オブジェクト.
       一般的なデータ構造:スタック  キュー  木 図 集合….今回はES 6のデータ構造SetとMapが追加されました.
 
セット:
多くのデータを一緒に置いて、重複した項目がありません. .
これは配列に類似しており、元の値やオブジェクト参照にかかわらず、任意のタイプの値を記憶することができますが、メンバの値は一意であり、重複した値はありません.
構文:
var mySet = new Set();
セット 実例の属性と方法は以下の通りです.
  • add(value):ある値を追加して、Set構造自体に戻ります.
  • delete:ある値を削除し、ブール値を返します.削除が成功したかどうか
  • を表します.
  • has:Setのメンバ
  • であるかどうかを示すブール値を返します.
  • clear():全メンバーをクリアし、戻り値がない
  • size : セット内の要素の個数
  • Set構造の例は、メンバーを巡回するために使用できる4つのエルゴード法である.
  • keys():キーの名前を返すエルゴード
  • values():戻るキーのエルゴード
  • entries():戻るキーペアのエルゴード
  • forEach():各メンバ
  • をリフロー関数を使用して巡回します.
    注意:
    *Set構造にはキー名がなく、キー値(またはキー名とキーパッド値が同じ値)しかないので、keys方法とvaluesメソッドの動作は完全に一致しています.
    **Setの巡回順序は挿入順序です.
    次の例を一つずつ見ます.
    【例1】この一意の特性を利用して配列の再動作を行う
    //       。
    let mySet = new Set([1,2,2,3,3])
    console.log(mySet); //Set { 1, 2, 3 }
    
    //        
    let arr01 = [2,3,4,4,5];
    let arr02 = [1,2,4,6,5,7];
    let mySet02 = new Set([...arr01,...arr02])
    console.log(mySet02);//Set { 2, 3, 4, 5, 1, 6, 7 }
    let res = [...mySet02];
    console.log(res);//[ 2, 3, 4, 5, 1, 6, 7 ]
    
    【例2】size 集合の要素の個数
    //size         
    let mySet03 = new Set(['a','b','c']);
    console.log(mySet03.size);// 3 
    【例3】add(value)  Setに要素を追加します.
    //add(value) Set     。
    let addSet = new Set();
        addSet.add(1);
        addSet.add(2);
        addSet.add(3);
    console.log('add',addSet);//add Set { 1, 2, 3 }
    console.log(addSet.size); //3
    【例4】delete(value)  Setから要素を削除します.
    //delete(value) Set     。
    let delSet = new Set();
        delSet.add(1);
        delSet.add(2);
        delSet.add(3);
        delSet.delete(1);
    console.log('deleted',delSet);//deleted Set { 2, 3 }
    【例5】has(value)  ある元素が存在するかどうかを判断します.
    //has(value)         。
    let hasSet = new Set();
        hasSet.add(1);
        hasSet.add(2);
        hasSet.add(3);
        hasSet.delete(1); 
    console.log('has(1):',hasSet.has(1));//has(1): false
    console.log('has(2):',hasSet.has(2));//has(2): true
    【例6】clear() すべてのメンバーをクリアします.
    //clear()      。
    let clearSet = new Set();
        clearSet.add(1);
        clearSet.add(2);
        clearSet.add(3);    
    console.log('add',clearSet);//add Set { 1, 2, 3 }
        clearSet.clear(); //       
    console.log('clear:',clearSet);//clear: Set {}
    SetとArayの相互変換
    【例7】 行列 回転 セット
    let arrset = new Set([1,2,3,4,5])
    console.log(arrset)//Set { 1, 2, 3, 4, 5 }
    【例8】 セット 回転 行列
    //Set       
    let setArr = new Set([11,22,33,44]);
    console.log([...setArr])//[ 11, 22, 33, 44 ]
    【例9】 forEach()  方法は配列の各メンバーに対して一回提供する関数を実行します.
    //              。
    let forSet = new Set([1,2,3])
    console.log(forSet.size);//3
    
    forSet.forEach(function(item){
        console.log(item); 
    });
    // 1 
    // 2 
    // 3
    
    
    集合演算子は2つのセットに対して動作し、2つのセットは同じ列数を持たなければなりません.列は同じデータタイプを持っています.
        上述した関数法を用いてクロス集合の効果を実現した.
        配列のmapおよびfilter法は、Setに間接的に使用されてもよいので、Setを使用して、容易に統合、交差、および差セットを実現することができる.
    【例10】 集合 [11,22,33]  [22,33,44,55]  二つの所与のセットA、Bにおいて、二つのセットbaiがすべての要素に合わせて構成されるセット.
    //   [11,22,33]  [22,33,44,55]         A、B,    bai          
    let arr03 = [11,22,33];
    let arr04 = [22,33,44,55];
    let r = [...arr03,...arr04];
    let res = new Set(r);
    console.log(res);//Set { 11, 22, 33, 44, 55 }
    let uion = [...res];
    console.log(uion);//[ 11, 22, 33, 44, 55 ]
    【例11】交差点 二つの配列にある要素  二つの所与のセットA、Bは、Aに属し、Bに属している全ての要素から構成されるセットである.
    //                    A、B,   A   B          
    //  arr05   ,        arr06    
    let arr05 = [11,22,33,22,22];
    let arr06 = [22,33,44,55];
    let jjSet01 = new Set(arr05);//    
    let jjSet02 = new Set(arr06);
    let  intersect = [...jjSet01].filter(function(item){
        //console.log(item);
       return jjSet02.has(item);
    })
    console.log(intersect);//[ 22, 33 ]
    【例12】差分セット  A,Bは2つの集合であり、Aに属し、Bに属さない全ての要素構成の集合である.
    //    A,B     ,     A    B        
    //  arr06   ,        arr07    ,      
    let arr07 = [11,22,33,22,22];
    let arr08 = [22,33,44,55];
    let cj01 = new Set(arr07);
    let cj02 = new Set(arr08);
    let diff = [...cj01].filter(function(item){
        return !cj02.has(item)
    })
    console.log(diff); //[ 11 ]
     webset
    WeakSet構造はSetと同様であり、重複しない値のセットでもある.
           WeakSetのメンバーはオブジェクトだけであり、他のタイプの値ではなく、WeakSetはパラメータとして1つの配列または同様の配列のオブジェクトを受け入れることができる.
            WeakSetは、newコマンドを使用してWeakSetデータ構造を作成することができる構造関数です.
    構文:
    let wset= new ウェストセット()
     WeakSet構造には以下の3つの方法がある.
  • add(value):新しいメンバーを追加します.
  • delete:指定されたメンバーをクリアします.
  •  has(value):ある値があるかどうか、ブール値を返します.
  • const ws = new WeakSet();
    const obj = {};
    const foo = {};
    ws.add(obj);
    ws.has(foo);    // false
    //WeakSet   size  ,          。
    ws.size // undefined
    ws.forEach // undefined
    ws.forEach(function(item){ console.log('WeakSet has ' + item)})
    // TypeError: undefined is not a function
    WeakSetの他の知識点については、みんな自分で資料を調べてもいいですよ.
    次はMapについてお話しします.
    私の文章は全部学習中の総括です.もし間違いを見つけたら、メッセージを歓迎します.