JS数据结构与算法-集合

作者: ComfyUI | 来源:发表于2017-09-12 10:24 被阅读220次
    1. 定义

    集合是由一组无序且唯一(即不能重复)的项组成。
    可以把集合想象成一个既没有重复元素,也没有顺序概念的数组。

    1. 创建一个集合
      我们使用对象而不是数组来表示集合,因为js的对象不允许一个键指向两个不同的属性,也保证了集合里的元素都是唯一的。
    • 定义set类
    function Set() {
      var items = {};
    }
    
    • 实现has方法,如果值在集合中,返回true,否则返回false
    this.has = function(value) {
        return items.hasOwnProperty(value);
      };
    
    • 实现add方法,向集合添加一个新的项
      this.add = function(value) {
        //检查给定的value是否存在集合中,如果不存在,添加并返回true,反之返回false
        if(!this.has(value)) {
          items[value] = value;
          return true;
        }
        return false;
      };
    
    • 实现remove方法,从集合移除一个值。
    this.remove = function(value) {
        //给定的value是否存在于集合中,如果存在,就从这个集合中删除value,返回true,表示值被移除;否则返回false
        if(this.has(value)) {
          delete items[value];
          return true;
        }
        return false;
      };
    
    • 实现clear方法,移除集合中的所有项
    this.clear = function() {
        items = {};
    };
    
    • 实现size方法,返回集合所包含元素的数量
    this.size = function() {
        //使用Object.keys()方法
        return Object.keys(items).length;
     };
    
    • 实现values方法,返回一个包含集合中所有值的数组
    this.values = function() {
        //使用Object.keys()方法提取items对象的所有属性
        return Object.keys(items);
    };
    

    全部代码:

    function Set() {
      var items = {};
    
      //has方法如果值在集合中,返回true,否则返回false
      this.has = function(value) {
        return items.hasOwnProperty(value);
      };
    
      //add方法向集合添加一个新的项
      this.add = function(value) {
        //检查给定的value是否存在集合中,如果不存在,添加并返回true,反之返回false
        if(!this.has(value)) {
          items[value] = value;
          return true;
        }
        return false;
      };
    
      //remove方法,从集合中移除一个值
      this.remove = function(value) {
        //给定的value是否存在于集合中,如果存在,就从这个集合中删除value,返回true,表示值被移除;否则返回false
        if(this.has(value)) {
          delete items[value];
          return true;
        }
        return false;
      };
    
      //clear方法,移除集合中的所有项
      this.clear = function() {
        items = {};
      };
    
      //size方法返回集合中所包含元素的数量
      this.size = function() {
        //使用Object.keys()方法
        return Object.keys(items).length;
      };
    
      //values方法,返回一个包含集合中所有值的数组
      this.values = function() {
        //使用Object.keys()方法提取items对象的所有属性
        return Object.keys(items);
      };
    }
    
    var set = new Set();
    
     set.add(1);
     console.log(set.values()); // ["1"]
     console.log(set.has(1)); // true
     console.log(set.size()); // 1
    

    参考学习

    学习javascript数据结构与算法
    数据结构与算法javascript描述

    相关文章

      网友评论

        本文标题:JS数据结构与算法-集合

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