Javascript 集合

集合的特點(diǎn)是不包含重復(fù)元素,集合的元素通常無順序之分。在系統(tǒng)編程中集合很常用,但是并非所有語言都原生支持集合。
集合的三條理論:

  • 不包含任何元素的集合為空集
  • 兩個(gè)集合包含的元素完全一樣,則它們相等
  • 集合A是集合B的子集,如果A的所有元素都在B中出現(xiàn)
    集合的三種基本操作:
  • Union,兩個(gè)集合的并
  • Intersection,兩個(gè)集合的交
  • Difference,兩個(gè)集合的差

集合的js實(shí)現(xiàn):

function Set() {
    this.dataStore = [ ];
    // operations
    this.add = add;
    this.remove = remove;
    this.size = size;
    this.union = union;
    this.intersect = intersect;
    this.subset = subset;
    this.difference = difference;
    this.show = show;
}

function add(data) {
    if (this.dataStore.indexOf(data) < 0) {
        this.dataStore.push(data);
        return true;
    }
    else {
        return false;
    }
}

function remove(data) {
    var pos = this.dataStore.indexOf(data);
    if (pos > -1) {
        this.dataStore.splice(pos, 1);
        return true;
    }
    else {
        return false;
    }
}

function show() {
    return this.dataStore;
}

function contains(data) {
    return this.dataStore.indexOf(data) > -1 ;
}

function union(set) {
    var tmp = new Set();
    for  each (var e in this.dataStore) {
        tmp.add(e);
    }
    for each (var e in set) {
        if (!tmp.contains(e)) {
            tmp.push(e);
        }
    }
    return tmp;
}

function subset(set) {
    if (this.size() > set.size()) {
        return false;
    }
    else {
        for each (var e in this.dataStore) {
            if (!set.contains(e)) {
                return false;
            }
        }
    }
    return true;
}

function size() {
    return this.dataStore.length;
}
// 返回 this - set
function difference(set) {
    var tmp = new Set();
    for each (var e1 in this.dataStore) {
        if (!set.contains(e1)) tmp.add(e1);
    }
    return tmp;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、集合入門總結(jié) 集合框架: Java中的集合框架大類可分為Collection和Map;兩者的區(qū)別: 1、Col...
    程序員歐陽閱讀 11,810評(píng)論 2 61
  • 存?zhèn)€檔,萬一哪天再有人問起呢~ 父母閱讀的部分育兒類書籍推薦: 1.心理類 《孩子,挑戰(zhàn)》:多子女家庭問題&實(shí)戰(zhàn)解...
    牛牛的Annie閱讀 920評(píng)論 1 3
  • 文/靜話心是 不知從何時(shí)起我們便習(xí)慣了目送和告別 站在站臺(tái)上擁抱和揮手 沒有過分的傷感 多了一份從容和期待 或許人...
    靜話心是閱讀 202評(píng)論 4 12
  • …… 我的到來令袁衛(wèi)紅驚喜不已。 我們盡情暢談著分別以后發(fā)生那些事:她父母要求她嫁人,她的哥哥嫂子...
    冒牌文人閱讀 577評(píng)論 0 0
  • 漸漸地我習(xí)慣了初中生活,跟班上的同學(xué)處的也越來越好,更開心的是,我憑借著自己的努力,當(dāng)上了我們班主任的...
    宗博閱讀 283評(píng)論 0 0

友情鏈接更多精彩內(nèi)容