JSデータ構造とアルゴリズム——集合、集合、交差、補完


概念:セットは、無秩序でユニークな要素のセットからなるデータのセットです.数学の集合と同じ概念です.ES 6には集合のデータ構造概念――Set類が導入されている.
一般的には空セット、集合、交差、差セットがあります.
応用シーン: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データ構造とアルゴリズム」
(終わり)