美文网首页
集合的应用

集合的应用

作者: 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

相关文章

  • 集合的应用

    集合的特点 集合中的元素一般是无序的、不重复的 集合的常见操作 add(value):向集合中添加一项remove...

  • 我的Swift的学习总结 -->第二周

    集合 集合:Set,定义一个集合可以写成:var 集合名 : Set<集合类型> = [集合元素],具体的集合应用...

  • Java集合的应用

    /*创建一个学生数组,存储三个学生对象并遍历 * 1.写一个学生类 * 2.创建学生数组 * 3. 创建学生对象 ...

  • JDK 源码解析 —— 集合框架

    转载自:Java集合框架实例 1- 介绍 集合是程序和语言的基本思想。应用程序通常都会应用到集合,例如雇员的信息,...

  • Java8-流-简介

    几乎每个java应用程序都会制造和处理集合,要是没有集合,还能做什么呢?尽管集合对于几乎任何一个java应用都是不...

  • JAVA集合应用

    ArrayList使用 public class Notice { }/** list示例 公告需求管理 @aut...

  • 集合应用类型

    Object 目前为止,大多数的引用对象都是Object。有两种方式创建Object对象,第一种就是使用new对象...

  • Swift第二周学习总结

    第六天 集合 1.集合的定义 2.集合的相关应用 字典 1.字典的定义 2.字典的相关应用 函数 1.定义函数 2...

  • Java中的集合框架

    学习了解 集合框架的概念与作用 集合框架的体系结构 集合框架的实际应用 概念与作用 集合概念: 在现实生活中,很多...

  • 4-Java常用工具类-集合

    集合: 集合的概念;体系结构;实际应用 通过案例为大家展示集合中类和接口的使用。 生活中的集合: 人或事物聚集到一...

网友评论

      本文标题:集合的应用

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