JS中的集合结构

1 集合结构的特点

  1. 集合比较常见的实现方式是哈希表
  2. 集合通常是一组无序的,不能重复的元素构成
    • 和数学中的集合名词比较相似,但是数学中的集合范围更大一些,也许集合中的元素重复
    • 在计算机中,集合通常表示的结构中的元素是不允许重复的
  3. 集合是特殊的数组
    • 特殊之处在于里面的元素没有顺序,也不能重复
    • 没有顺序意味着不能通过下标值进行访问,不能重复意味着相同的对象在集合中只会存在一份

2 集合中常见的方法

  • add(value):向集合添加一个新的项。
  • remove(value):从集合移除一个值。
  • has(value):如果值在集合中,返回true,否则返回false。
  • clear():移除集合中的所有项。
  • size():返回集合所包含元素的数量。与数组的length属性类似。
  • values():返回一个包含集合中所有值的数组。

3 集合间的操作

  • 并集
  • 交集
  • 差集
  • 子集

4 封装集合类

function Set() {
            //属性
            this.items = {}
            //方法
            //add 方法
            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){
                //1.判断集合中是否包含该元素
                if(!this.has(value)){
                    return false
                }
                //2.将元素从属性中删除
                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) {
                //this:集合对象A
                //otherSet:集合对象B

                //1.创建新的集合
                var unionSet = new Set();

                //2.将集合A中的所有元素添加到新集合中
                var values1 = this.values();
                for(var i = 0;i < values1.length;i++){
                    unionSet.add(values1[i])
                }

                //3.取出B集合中的元素,判断是否需要添加到新集合
                var values2 = otherSet.values();
                for(var i = 0;i < values2.length;i++){
                    unionSet.add(values2[i])
                }

                return unionSet;
            }
            //交集
            Set.prototype.intersection = function(otherSet){
                 //this: 集合A
                //otherSet: 集合B
                //1.创建新集合
                var intersectionSet = new Set();
                //2.从A中取出一个个元素,判断是否同时存在与集合B中,存入新集合
                var values = this.values();
                for(var i = 0;i < values.length; i++){
                    var item = values[i];
                    if(otherSet.has(item)){
                        intersectionSet.add(item)
                    }
                }
                return intersectionSet;
            }
            //差集
            Set.prototype.defference = function(otherSet){
                //this: 集合A
                //otherSet: 集合B
                //1.创建新集合
                var intersectionSet = new Set();
                //2.从A中取出一个个元素,判断是否同时存在与集合B中,存入新集合
                var values = this.values();
                for(var i = 0;i < values.length; i++){
                    var item = values[i];
                    if(!otherSet.has(item)){
                        intersectionSet.add(item)
                    }
                }
                return intersectionSet;
            }
            //判断当前集合是否是其它集合的子集
            Set.prototype.subSet = function (otherSet){
                //this: 集合A
                //otherSet: 集合B
                //遍历集合A中所有元素,如果发现,集合A中的元素在集合B中不存在,那么返回false
                //如果遍历完了整个集合依然没有返回false,返回true即可
                var values = this.values();
                for(var i = 0;i < values.length; i++){
                    var item = values[i];
                    if(!otherSet.has(item)){
                        return false;
                    }
                }
                return true;
            }
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UnityJS脚本集合是一种可以容纳多个数据项的对象。常用的集合有数组(Array),列表(List)和字典(Dictionary)。数组和列表都可以用来存储一个序列的元素,但是列表比数组更灵活,可以动态地添加和删除元素。字典则可以用来存储键值对,可以通过键来查找和访问其的值。 在使用集合时,需要注意集合的类型和方法。可以使用类似于数组的foreach语句遍历和操作集合的每个元素,也可以使用集合特定的方法,如Add()、Remove()、ContainsKey()、ContainsValue()等来增加、删除、查找和修改集合的元素。 另外,在使用集合时要注意内存的使用,避免集合的过度创建和销毁造成性能瓶颈。可以使用对象池等技术来减少内存的占用,提高程序的性能。 总之,集合在UnityJS脚本是一个非常重要的概念,熟练掌握集合的使用可以为游戏开发带来更高效的解决方案,提高代码的质量和可维护性。 ### 回答2: Unity是一个非常强大的游戏开发引擎,它允许开发者使用各种编程语言编写游戏逻辑和交互。其,JavaScript(JS)是Unity最常用的脚本语言之一,它可以轻松地创建游戏逻辑和操作游戏对象。 在Unity JS脚本集合是一组相同类型的变量的容器,比如数组(Array)和列表(List)。这些集合可以存储不同类型的变量,如整数、字符串、对象等。 使用集合可以大大简化编程过程,因为它允许开发者轻松地对大量数据进行操作,并且可以根据需要随时添加或删除元素。比如,在游戏,我们可以使用数组来存储玩家的分数,列表来存储敌人的位置等数据信息。 除了数组和列表之外,还有一些其他的集合类型,如字典(Dictionary)和队列(Queue)。字典可以存储键值对,这对于需要快速查找和获取数据的应用程序非常有用。队列可以按照先进先出(FIFO)的顺序存储元素,这对于需要控制任务或进程执行顺序的应用程序非常有用。 总之,在Unity JS脚本集合是一个非常重要的概念。通过使用集合,开发者可以更轻松地管理和操作数据,从而提高游戏的性能和可玩性。通过学习这些集合类型的用法和特性,开发者可以更好地掌握Unity游戏开发的技能和能力。 ### 回答3: 在unity的js脚本集合指的是一种数据结构,用于存储多个相同类型的元素。在js脚本,常用的集合类型包括数组(Array)和哈希表(Hashtable)。 数组是一种有序集合类型,用于存储多个相同类型的元素。在js脚本,数组可以通过声明和初始化来创建,也可以通过调用push()方法来将元素添加到数组。可以使用for循环或foreach循环来遍历数组的元素。 哈希表是一种无序的集合类型,用于存储多个键值对。在js脚本,哈希表可以通过声明和初始化来创建,也可以通过调用Add()方法来添加键值对。可以使用foreach循环来遍历哈希表的键值对。 在使用集合类型时,需要注意元素的类型和相应的操作方法。同时需要考虑集合的大小和效率等问题,选择合适的集合类型来存储和处理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值