先端——JavaScript進級27--ES 6のセット
5166 ワード
データ構造:
データ構造とはデータを格納する構造である. 配列、オブジェクト.
一般的なデータ構造:スタック キュー 木 図 集合….今回はES 6のデータ構造SetとMapが追加されました.
セット:
多くのデータを一緒に置いて、重複した項目がありません. .
これは配列に類似しており、元の値やオブジェクト参照にかかわらず、任意のタイプの値を記憶することができますが、メンバの値は一意であり、重複した値はありません.
構文: add(value):ある値を追加して、Set構造自体に戻ります. delete:ある値を削除し、ブール値を返します.削除が成功したかどうか を表します. has:Setのメンバ であるかどうかを示すブール値を返します. clear():全メンバーをクリアし、戻り値がない size : セット内の要素の個数 Set構造の例は、メンバーを巡回するために使用できる4つのエルゴード法である. keys():キーの名前を返すエルゴード values():戻るキーのエルゴード entries():戻るキーペアのエルゴード forEach():各メンバ をリフロー関数を使用して巡回します.
注意:
*Set構造にはキー名がなく、キー値(またはキー名とキーパッド値が同じ値)しかないので、keys方法とvaluesメソッドの動作は完全に一致しています.
**Setの巡回順序は挿入順序です.
次の例を一つずつ見ます.
【例1】この一意の特性を利用して配列の再動作を行う
【例7】 行列 回転 セット
上述した関数法を用いてクロス集合の効果を実現した.
配列のmapおよびfilter法は、Setに間接的に使用されてもよいので、Setを使用して、容易に統合、交差、および差セットを実現することができる.
【例10】 集合 [11,22,33] [22,33,44,55] 二つの所与のセットA、Bにおいて、二つのセットbaiがすべての要素に合わせて構成されるセット.
WeakSet構造はSetと同様であり、重複しない値のセットでもある.
WeakSetのメンバーはオブジェクトだけであり、他のタイプの値ではなく、WeakSetはパラメータとして1つの配列または同様の配列のオブジェクトを受け入れることができる.
WeakSetは、newコマンドを使用してWeakSetデータ構造を作成することができる構造関数です.
構文:
let wset= new ウェストセット()
WeakSet構造には以下の3つの方法がある. add(value):新しいメンバーを追加します. delete:指定されたメンバーをクリアします. has(value):ある値があるかどうか、ブール値を返します.
次はMapについてお話しします.
私の文章は全部学習中の総括です.もし間違いを見つけたら、メッセージを歓迎します.
データ構造とはデータを格納する構造である. 配列、オブジェクト.
一般的なデータ構造:スタック キュー 木 図 集合….今回はES 6のデータ構造SetとMapが追加されました.
セット:
多くのデータを一緒に置いて、重複した項目がありません. .
これは配列に類似しており、元の値やオブジェクト参照にかかわらず、任意のタイプの値を記憶することができますが、メンバの値は一意であり、重複した値はありません.
構文:
var mySet = new Set();
セット 実例の属性と方法は以下の通りです.注意:
*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 ]
websetWeakSet構造はSetと同様であり、重複しない値のセットでもある.
WeakSetのメンバーはオブジェクトだけであり、他のタイプの値ではなく、WeakSetはパラメータとして1つの配列または同様の配列のオブジェクトを受け入れることができる.
WeakSetは、newコマンドを使用してWeakSetデータ構造を作成することができる構造関数です.
構文:
let wset= new ウェストセット()
WeakSet構造には以下の3つの方法がある.
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についてお話しします.
私の文章は全部学習中の総括です.もし間違いを見つけたら、メッセージを歓迎します.