(js描述的)数据结构[集合结构](6)

(js描述的)数据结构[集合结构](6)

一.集合结构特点

1.集合中的元素不能重复。
2.集合是无序的。

二.集合的代码实现

function Set() {
            this.items = {}

            //1. add方法
            Set.prototype.add = function(value) {
                //判断集合中是否包含元素
                if (this.has(value)) {
                    return false
                }
                //把数据添加到集合中
                this.items[value] = value
                return true
            }
            // 2.has方法
            Set.prototype.has = function(value) {
                return this.items.hasOwnProperty(value)
            }
            // 3.remove方法
            Set.prototype.remove = function(value) {
                if (!this.has(value)) {
                    return false
                }
                delete this.items[value]
                return true
            }
            // 4.clear方法
            Set.prototype.clear = function() {
                this.items = {}
            }
            // 5.size方法
            Set.prototype.size = function() {
                return Object.keys(this.items).length
            }
            // 6.获取集合中所有的值
            Set.prototype.values = function() {
                return Object.keys(this.items)
            }
            
            // 集合间的操作
            // 1. union方法
            Set.prototype.union = function(other) {
            	var newSet = new Set()
                var values = this.values()
                for (var i = 0; i< values.length; i++) {
                    newSet.add(values[i])
                }
                values = other.values()
                for (var i = 0; i< values.length ; i++) {
                        newSet.add(values[i])
                }
                return newSet
            }
            // 2.interSection方法
            Set.prototype.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
            }
            // 3.difference方法
            Set.prototype.difference = function(otherSet) {
                var differenceSet = new Set()
                var values = this.values()
                for (var i =0; i< values.length ; i++) {
                    if (!otherSet.has(values[i])) {
                        differenceSet.add(values[i]))
                    }
                }
                return differenceSet
            }
            // 4.subSet方法
            Set.prototype.subSet = function(otherSet) {
                var values = this.values()
                for (var i = 0; i< values.length; i++) {
                    if (!otherSet.has(values[i])) {
                        return false
                    }
                }
                return true
            }
        }
原文地址:https://www.cnblogs.com/jackson1/p/12682673.html