(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. OPENGL图形渲染管线图解

    OPENGL固定图形渲染管线可以粗略地认为由下面的阶段衔接而成: 顶点颜色,光照,材质三个输入在光栅化前控制绘制管线的操作.光照和材质不能单独使用.顶点颜色,光源颜色,材质颜色都有alpha值,它们的 ...

  2. iview admin template 基础模板架子

    https://github.com/iview/iview-admin/tree/template

  3. 浅谈 HTTP中Get与Post的区别

    浅谈 HTTP中Get与Post的区别 存在的误区 有人说 HTTP 协议下的 Get 请求参数长度是有大小限制的,最大不能超过XX,而 Post 是无限制的,看到这里,我想他们定是看多了一些以讹传讹 ...

  4. Hacker101-CTF | Postbook

    Hacker101-CTF | Postbook mirror王宇阳 水平有限,不足之处还望指教 ^_^ 看看这个一大堆英文介绍 With this amazing tool you can writ ...

  5. oracle中表空间管理,游标

    一.表空间 oracle使用表空间来管理数据库的对象(表,序列,过程,函数,游标等). oracle的逻辑结构(看不见的):oracle数据库 => 表空间 => 表 序列  过程等对象. ...

  6. Python中常见的报错名称

    Python中常见的报错名称 1.SyntaxError 语法错误.看看是否用Python关键字命名变量,有没有使用中文符号,运算符.逻辑运算符等符号是不是使用不规范. 2.IndentationEr ...

  7. C语言经典练习题:水仙花数

    废话不说直接进入正题:传说中的水仙花数就是一个三位数的各个位数的三次方之和就是这个数本身例如153=1*1*1+5*5*5+3*3*3. 好,开始解题:首先,题中已经说了水仙花数是一个三位数,也就是说 ...

  8. hdu2838 cow sorting用树状数组求逆序对

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2838/ 题目解法:题目给出一个1-n的排列,操作只有一种:交换相邻的元素,代价是两个元素之和,问将该序列变成升序 ...

  9. [币严BIZZAN区块链]Java生成ETH钱包助记词、私钥、地址

    本文主要介绍在Java工程中如何生成ETH钱包的助记词.私钥.地址. 一.在之前创建的spring boot 项目中的 pom.xml文件中加入需要的依赖 <dependency> < ...

  10. JavaWeb----Cookie&Session

    ##  会话技术 1.会话:一次会话中包含多次请求和响应. *  第一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止. 2.功能:再一次会话的范围内的多次请求间,共享数据 3. ...