(js描述的)数据结构[集合结构](6)

一.集合结构特点

1.集合中的元素不能重复。

2.集合是无序的。

二.集合的代码实现

  1. function Set() {
  2. this.items = {}
  3. //1. add方法
  4. Set.prototype.add = function(value) {
  5. //判断集合中是否包含元素
  6. if (this.has(value)) {
  7. return false
  8. }
  9. //把数据添加到集合中
  10. this.items[value] = value
  11. return true
  12. }
  13. // 2.has方法
  14. Set.prototype.has = function(value) {
  15. return this.items.hasOwnProperty(value)
  16. }
  17. // 3.remove方法
  18. Set.prototype.remove = function(value) {
  19. if (!this.has(value)) {
  20. return false
  21. }
  22. delete this.items[value]
  23. return true
  24. }
  25. // 4.clear方法
  26. Set.prototype.clear = function() {
  27. this.items = {}
  28. }
  29. // 5.size方法
  30. Set.prototype.size = function() {
  31. return Object.keys(this.items).length
  32. }
  33. // 6.获取集合中所有的值
  34. Set.prototype.values = function() {
  35. return Object.keys(this.items)
  36. }
  37. // 集合间的操作
  38. // 1. union方法
  39. Set.prototype.union = function(other) {
  40. var newSet = new Set()
  41. var values = this.values()
  42. for (var i = 0; i< values.length; i++) {
  43. newSet.add(values[i])
  44. }
  45. values = other.values()
  46. for (var i = 0; i< values.length ; i++) {
  47. newSet.add(values[i])
  48. }
  49. return newSet
  50. }
  51. // 2.interSection方法
  52. Set.prototype.interSection = function(otherSet) {
  53. var interSectionSet = new Set()
  54. var values = this.values()
  55. for (var i =0; i< values.length; i++) {
  56. if (otherSet.has(values[i])) {
  57. interSectionSet.add(values[i])
  58. }
  59. }
  60. return interSectionSet
  61. }
  62. // 3.difference方法
  63. Set.prototype.difference = function(otherSet) {
  64. var differenceSet = new Set()
  65. var values = this.values()
  66. for (var i =0; i< values.length ; i++) {
  67. if (!otherSet.has(values[i])) {
  68. differenceSet.add(values[i]))
  69. }
  70. }
  71. return differenceSet
  72. }
  73. // 4.subSet方法
  74. Set.prototype.subSet = function(otherSet) {
  75. var values = this.values()
  76. for (var i = 0; i< values.length; i++) {
  77. if (!otherSet.has(values[i])) {
  78. return false
  79. }
  80. }
  81. return true
  82. }
  83. }

(js描述的)数据结构[集合结构](6)的更多相关文章

  1. (js描述的)数据结构[队列结构,优先级队列](3)

    (js描述的)数据结构[队列结构](3) 一.队列结构的特点: 1.基于数组来实现,的一种受限的线性结构. 2.只允许在表头进行删除操作,在表尾进行插入操作. 3.先进先出(FIFO) 二.队列的一些 ...

  2. (js描述的)数据结构[栈结构](2)

    (js描述的)数据结构[栈结构](2) 一.什么是栈结构 1.一种受限制的线性结构,这种结构可以基于数组来实现. 2.可以抽象成一个容器,上面的是栈顶,底下的是栈底.所以仅允许对栈顶进行操作, 二.栈 ...

  3. (js描述的)数据结构[哈希表1.1](8)

    (js描述的)数据结构[哈希表1.1](8) 一.数组的缺点 1.数组进行插入操作时,效率比较低. 2.数组基于索引去查找的操作效率非常高,基于内容去查找效率很低. 3.数组进行删除操作,效率也不高. ...

  4. (js描述的)数据结构[双向链表](5)

    (js描述的)数据结构[双向链表](5) 一.单向链表的缺点 1.只能按顺序查找,即从上一个到下一个,不能反过来. 二.双向链表的优点 1.可以双向查找 三.双向链表的缺点 1.结构较单向链表复杂. ...

  5. (js描述的)数据结构[链表](4)

    (js描述的)数据结构 [链表](4) 一.基本结构 二.想比于数组,链表的一些优点 1.内存空间不是必须连续的,可以充分利用计算机的内存,事项灵活的内存动态管理. 2.链表不必再创建时就确定大小,并 ...

  6. (js描述的)数据结构[字典](7)

    (js描述的)数据结构[字典](7) 一.字典的特点 1.字典的主要特点是一一对应关系. 2.使用字典,剋通过key取出对应的value值. 3.字典中的key是不允许重复的,而value值是可以重复 ...

  7. 用JS描述的数据结构及算法表示——栈和队列(基础版)

    前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里 ...

  8. (js描述的)数据结构[树结构1.1](11)

    1.树结构: 我们不能说树结构比其他结构都要好,因为每种数据结构都有自己特定的应用场景. 但是树确实也综合了上面的数据结构的优点(当然有点不足于盖过其他的数据结构,比如效率一般情况下没有哈希表高) 并 ...

  9. (js描述的)数据结构[树结构之红黑树](13)

    1.二叉送搜索树的缺点: 2.红黑树难度: 3.红黑树五大规则: 4.红黑树五大规则的作用: 5.红黑树二大变换: 1)变色 2)旋转 6.红黑树的插入五种变换情况: 先声明--------插入的数据 ...

随机推荐

  1. Vue2.0 【第一季】第2节 v-if v-else v-show 指令

    目录 Vue2.0 [第一季]第2节 v-if v-else v-show 指令 第二节 v-if v-else v-show 指令 2.1 v-if指令.v-else指令: 2.2 v-show的使 ...

  2. yarn报错error An unexpected error occurred:****ETIMEDOUT

    起因 在一个美好的下午,我敲击键盘输入quasar create Tangerine_Reception 我自豪的使用yarn作为包管理器,本以为万事无忧,不用担心出现npm的种种异常了...... ...

  3. Python基础篇(四)_组合数据类型的基本概念

    Python基础篇——组合数据类型的基本概念 集合类型:元素的集合,元素之间无序 序列类型:是一个元素向量,元素之间存在先后关系,通过序号进行访问,没有排他性,具体包括字符串类型.元组类型.列表类型 ...

  4. 关于编码和解码问题——encode、decode

            一.背景和问题 近期在做一个关于声卡录音的项目,开发环境是win10 64位家庭中文版,pycharm2019.1,python3.6(Anaconda3),python模块pyaud ...

  5. weblogic漏洞练习

    About WebLogic WebLogic是美商Oracle的主要产品之一,系购并得来.是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第 ...

  6. 深度强化学习(DRL)专栏(一)

    目录: 1. 引言 专栏知识结构 从AlphaGo看深度强化学习 2. 强化学习基础知识 强化学习问题 马尔科夫决策过程 最优价值函数和贝尔曼方程 3. 有模型的强化学习方法 价值迭代 策略迭代 4. ...

  7. iOS MachO

    一.前言 1.1 程序和进程 广义上的程序就是一个静态的可执行文件,是由一个已经编译好的指令和数据集合的一个文件.就像通过 Xcode 编译好的 Mach-O 文件.而进程则是一个动态的概念,是程序的 ...

  8. flask中filter和filter_by的区别

    filter_by表内部精确查询 User.query.filter_by(id=4).first() filter 全局查询 id必须指明来源于那张表User,而且需要用等号,而不是赋值 User. ...

  9. 模块 random 随机

    random 随机数 0 导入 >>> import random 1 random 随机小数 random.random() # 大于0且小于1之间的小数 0.7664338663 ...

  10. logstash用jdbc插件将数据库内容导入elasticsearch时间字段相差5小时

    logstash将mysql的数据导入elasticsearch之后发现时间字段的相差5个小时 解决办法: 在数据库连接配置后面加上?serverTimezone=UCT这个就OK了 logstash ...