美文网首页
集合的应用

集合的应用

作者: kevin5979 | 来源:发表于2019-11-28 21:51 被阅读0次

    集合的特点

    • 集合中的元素一般是无序的不重复的

    集合的常见操作

    add(value):向集合中添加一项
    remove(value):在集合中移除一项
    has(value):检查集合中是否存在某一项,返回布尔值
    clear():清空集合中所有元素
    size():返回集合中元素的长度
    values():返回集合中所有项
    union(otherSet):并集操作
    intersection(otherSet):交集操作
    difference(otherSet):差集操作
    subset(otherSet):子集操作
    complement(otherSet):补集操作


    封装集合代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <script>
            function Set(){
                //属性
                this.items = {}
    
                //app方法
                Set.prototype.add = function(value){
                    if(this.has(value)){
                        return false
                    }
    
                    this.items[value] = value
                    return true
                }
    
                //has方法
                Set.prototype.has = function(value){
                    return this.items.hasOwnProperty(value)
                }
    
                //remove方法
                Set.prototype.remove = function(value){
                    if(!this.has(value)){
                        return false
                    }
    
                    delete this.items[value]
                    return true
                }
    
                //clear方法
                Set.prototype.clear = function(){
                    this.items = {}
                }
    
                //size方法
                Set.prototype.size = function(){
                    return Object.keys(this.items).length
                }
    
                //values方法
                Set.prototype.values = function(){
                    return Object.keys(this.items)
                }
    
                // ********************************** //
    
                //并集
                Set.prototype.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
                }
                
                //交集
                Set.prototype.intersection = function(otherSet){
                    var intersectionSet = new Set()
                    var values = this.values()
                    for(var i in values){
                        var item = values[i]
                        if(otherSet.has(item)){
                            intersectionSet.add(item)
                        }
                    }
                    return intersectionSet
                }
            
                //差集
                Set.prototype.difference = function(otherSet){
                    var differenceSet = new Set()
                    var values = this.values()
                    for(var i in values){
                        var item = values[i]
                        if(!otherSet.has(item)){
                            differenceSet.add(item)
                        }
                    }
                    return differenceSet
                }
            
                //子集
                Set.prototype.subset = function(otherSet){
                    var values = this.values()
                    for(var i in values){
                        var item = values[i]
                        if(!otherSet.has(item)){
                            return false
                        }
                    }
                    return true
                }
    
                //补集
                Set.prototype.complement = function(otherSet){
                    var componentSet = new Set()
                    if(!otherSet.subset(this)){
                        return false
                    }
                    var values = otherSet.values()
                    for(var i = 0; i < values.length; i++){
                        if(this.has(values[i])){
                            componentSet.add(values[i])
                        }                   
                    }
                    return componentSet
                }
            }
    
            var s = new Set()
            s.add("1")
            s.add("2")
            s.add("3")
            s.add("4")
            var ss = new Set()
            ss.add("2")
            ss.add("3")
            alert(s.complement(ss).values())
        </script>
    </body>
    </html>
    
    END

    相关文章

      网友评论

          本文标题:集合的应用

          本文链接:https://www.haomeiwen.com/subject/fayiwctx.html