概念和结构

  • 集合里面的元素不能重复
  • 集合里面的元素只有值。
  • 不包含任何元素的集合叫空集。

集合的操作

集合有九种常用操作,分别为

  1. 检查元素是否存在 has(element)
  2. 添加元素 add(element)
  3. 移除元素 remove(element)
  4. 清空集合 clear()
  5. 获取集合长度 size()
  6. 提取集合所有值 values()
  7. 并集 union(otherSet)
  8. 交集 intersection(otherSet)
  9. 差集 difference(otherSet)

JS实现

JS里面的集合结构需要通过对象(object)来实现,因为集合里面的元素只有值,没有键或索引,因此我们可以让对象里面的属性的键值对取相同的值来达到这个效果。

function MySet(){var set = {};//检查元素是否存在this.has = function(element){return set.hasOwnProperty(element);}//添加元素this.add = function(element){if(this.has(element)){//元素已经有了return false;}else{//元素没有则添加set[element] = element;return element;}}//删除元素this.remove = function(element){if(this.has(element)){//元素有了则删除delete set[element];return true;}else{//元素没有return false;}}//清空集合this.clear = function(){set = {};}//获取集合长度this.size = function(){return Object.keys(set).length;}//提取集合所有值this.values = function(){var result = [];for(var key in set){if(set.hasOwnProperty(key)){result.push(set[key]);}}return result;}//并集this.union = function(otherSet){var result = new MySet();this.values().forEach(element => {result.add(element);});otherSet.values().forEach(element => {result.add(element);});return result;}//交集this.intersection = function(otherSet){var result = new MySet();this.values().forEach(element => {if(otherSet.has(element)){result.add(element);}});return result;}//差集this.difference = function(otherSet){var result = new MySet();this.values().forEach(element => {if(!otherSet.has(element)){result.add(element);}});return result;}
}

JavaScript数据结构——集合(Set)相关推荐

  1. 学习javascript数据结构(三)——集合

    前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...

  2. Javascript学习数据结构--集合(Set实现)

    定义 set是不允许重复元素的集合类型,set体系最常用的是HashSet ,TreeSet, LinkedHashSet.相同的元素是放不进去set的. HasHSet是使用HashMap实现的,只 ...

  3. JavaScript数据结构与算法(2)(集合、字典、哈希表、二叉树、图)(ES6)

    注意:原教学视频:JavaScript(ES6)数据结构和算法 | JavaScript数据结构与算法 (都是CoderWhy老师的教学) 原作者(笔记)链接:JavaScript 数据结构与算法 | ...

  4. JavaScript数据结构与算法——集合

    1.集合数据结构 集合是一组无序且唯一(不能重复)的项组成的.这个数据结构使用了和有限集合相同的数学概念. 2.创建集合 function Set() {// 这里使用对象而不是数组来表示集合 // ...

  5. 学习JavaScript数据结构与算法(一):栈与队列

    本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列 第二篇文章:学习JavaScript数据结构与算法(二):链表 第三篇文章:学习JavaScript数据结构与算法(三): ...

  6. 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组

    第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...

  7. JavaScript数据结构与算法——链表详解(上)

    注:与之前JavaScript数据结构与算法系列博客不同的是,从这篇开始,此系列博客采用es6语法编写,这样在学数据结构的同时还能对ECMAScript6有进一步的认识,如需先了解es6语法请浏览ht ...

  8. JavaScript数据结构和算法简述——数组

    为什么先讲数组 数据结构可以简单的被分为线性结构和非线性结构. 线性结构大致包括: 数组(连续存储): 链表(离散存储): 栈(线性结构常见应用,由链表或数组增删和改进功能实现): 队列(线性结构常见 ...

  9. 《学习JavaScript数据结构与算法》第三章 数组

    文章目录 前言 一.创建 && 初始化数组 二.操作数组 push-添加元素于末尾 unshift-添加元素于开头 pop-从数组末尾开始删除元素 shift-从数组开头开始删除元素 ...

最新文章

  1. 2022年软件测试工具大全(自动化、接口、性能、安全、测试管理)
  2. 沙雕记(1) 之 Land Grab
  3. ARM+linux+2440嵌入式开发相关经典书籍(转)
  4. SharpDevelop 5.1 调试一个简单会员管理系统
  5. Unicode和UTF-8的区别
  6. VMwareworkstation 12安装
  7. linux mmu的实现的讲解_Linux中的段
  8. Zookeeper客户端Curator使用详解
  9. route add添加静态路由
  10. DDD(领域驱动设计)示例目录结构
  11. JavaScript之数组去重
  12. python教材分析_初中信息技术_初识Python教学设计学情分析教材分析课后反思
  13. YOLOX安装及训练
  14. php error unexpected,PHP 错误 Parse error: syntax error, unexpected ‘[‘ in 解决办法
  15. Reveal Effect(揭露效果)低版本兼容
  16. 航天生物计算机作文,科幻遨游太空作文(精选6篇)
  17. RobotStudio 项目移植问题——无法创建系统
  18. html字体图标设置
  19. 虚拟化——成功解决使用ovirt安装虚拟机系统时不能正常引导安装
  20. GoLang之Map深度讲解

热门文章

  1. virtualbox+vagrant学习-2(command cli)-7-vagrant login命令
  2. 客户端程序调用zookeeper报len4807928异常
  3. 开源软件许可协议简介
  4. Delphi天气预报查询
  5. C# 如何 保存对config文件的修改
  6. postman支持socket吗_你必须知道postman和Jmeter做接口测试区别
  7. php docker 化,如何配置一个 Docker 化持续集成的 PHP 开发环境(四)
  8. linux nfs会崩溃么,在linux上创建nfs遇到的问题。
  9. bilibili 解析_广西财经大学《殙》舞蹈解析
  10. 迷你世界无限迷你币体验服务器,迷你世界体验服无限迷你币