JS實現集合

來源:互聯網
上載者:User

標籤:for   不能   move   ret   blog   values   this   span   sub   

集合是由一組無序且唯一(即不能重複)的項組成的。這個資料結構使用了與有限集合相同的數學概念,但應用在電腦科學的資料結構中。

 

function Set() {    this.items = {};}Set.prototype = {    constructer: Set,    has: function(value) {        return value in this.items;    },    add: function(value) {        if (!this.has(value)) {            this.items[value] = value;            return true;        }        return false;    },    remove: function(value) {        if (this.has(value)) {            delete this.items[value];            return true;        }        return false;    },    clear: function() {        this.items = {};    },    size: function() {        return Object.keys(this.items).length;    },    values: function() {        return Object.keys(this.items); //values是數組    },    union: function(otherSet) {        var unionSet = new Set();        var values = this.values();        for (var i = 0; i < values.length; i++) {            unionSet.add(values[i]);        }        values = otherSet.values();        for (var i = 0; i < values.length; i++) {            unionSet.add(values[i]);        }        return unionSet;    },    intersection: function(otherSet) {        var intersectionSet = new Set();        var values = this.values();        for (var i = 0; i < values.length; i++) {            if (otherSet.has(values[i])) {                intersectionSet.add(values[i]);            }        }        return intersectionSet;    },    difference: function(otherSet) {        var differenceSet = new Set();        var values = otherSet.values();        for (var i = 0; i < values.length; i++) {            if (!this.has(values[i])) {                differenceSet.add(values[i]);            }        }        return differenceSet;    },    subset: function(otherSet) {        if (this.size() > otherSet.size()) {            return false;        } else {            var values = this.values();            for (var i = 0; i < values.length; i++) {                if (!otherSet.has(values[i])) {                    return false;                }            }        }        return true;    },}

 

JS實現集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.