JSデータ構造とアルゴリズム——集合、集合、交差、補完
2702 ワード
概念:セットは、無秩序でユニークな要素のセットからなるデータのセットです.数学の集合と同じ概念です.ES 6には集合のデータ構造概念――Set類が導入されている.
一般的には空セット、集合、交差、差セットがあります.
応用シーン:1)データのデバック;2)ユニークなデータを記憶するために使用します.
jsは一つの集合を実現します.
セットの特性はJavaScriptデータタイプのObjectに似ています.Objectオブジェクトの各キーは全部唯一です.以下はitemというオブジェクトで集合を表して、簡単な集合類を実現します.このセットの中の要素は、「value:value」の値のペアとして記憶されています.
Skipper類を定義し、集合を表します.その中には次のような操作方法が含まれています.
クラスをまとめる
二つのセットA、Bを与えて、彼らのすべての要素を一つにまとめて構成するセットは、集合AとセットBとの集合と呼ばれ、A∪Bと表記し、AとBと読んでいる.
Aを設定して、Bは2つの集合で、集合Aに属しており、集合Bに属するすべての要素からなる集合Aと集合Bとの交差点をA∩Bと表記します.
Aの中のすべてのBに属さない要素からなる集合は、集合BをAの中の補完と呼び、また差集合ともいう.
(終わり)
一般的には空セット、集合、交差、差セットがあります.
応用シーン:1)データのデバック;2)ユニークなデータを記憶するために使用します.
jsは一つの集合を実現します.
セットの特性はJavaScriptデータタイプのObjectに似ています.Objectオブジェクトの各キーは全部唯一です.以下はitemというオブジェクトで集合を表して、簡単な集合類を実現します.このセットの中の要素は、「value:value」の値のペアとして記憶されています.
Skipper類を定義し、集合を表します.その中には次のような操作方法が含まれています.
class Skipper{
constructor(){
this.item = {}; // ( , value : value)
}
}
要素の検索方法 has(element){
return this.item.hasOwnProperty(element);
}
元素の追加方法 add(element){
if(!this.has(element)){
this.item[element] = element;
return 'success';
}else{
return ' ';
}
}
要素の削除方法 remove(element){
if(this.has(element)){
delete this.item[element];
return 'success';
}else{
return ' ';
}
}
元素のクリア方法 clear(){
this.item = {};
}
集合のサイズを表示 size(){
return Object.keys(this.item).length; // item
}
セットのすべての要素を抽出し、結合された行列 values(){
let arr = [];
for(let key in this.item){
arr.push(this.item[key]);
}
return arr;
}
ソースの表示クラスをまとめる
二つのセットA、Bを与えて、彼らのすべての要素を一つにまとめて構成するセットは、集合AとセットBとの集合と呼ばれ、A∪Bと表記し、AとBと読んでいる.
class Union{
getSkipper(A,B){
let result = new Skipper();
A.values().forEach(element=>{ //
result.add(element); // add()
});
B.values().forEach(element=>{ //
result.add(element);
});
return result;
}
}
交易類Aを設定して、Bは2つの集合で、集合Aに属しており、集合Bに属するすべての要素からなる集合Aと集合Bとの交差点をA∩Bと表記します.
class Intersection{
getSkipper(A,B){
let result = new Skipper()
A.values().forEach(element=>{
if(B.has(element)){
result.add(element);
}
});
return result
}
}
補足クラスAの中のすべてのBに属さない要素からなる集合は、集合BをAの中の補完と呼び、また差集合ともいう.
class Difference{
getSkipper(A,B){
let result = new Skipper();
A.values().forEach(element=>{
if(!B.has(element)){
result.add(element);
}
});
return result;
}
}
もっと多いデータ構造は関連しています.コラムを見てください.「JavaScriptデータ構造とアルゴリズム」(終わり)