数据结构 - 集合
2019-06-15 09:48
1076 查看
集合
数据结构 - 集合,不重复。
// 集合实现 // ES5 var MySet = function() { var items = {}; // 检查元素是否存在 this.has = function(value) { return items.hasOwnProperty(value); }; // 添加元素 this.add = function(value) { // 集合不重复 - 先检查元素是否存在 if (!this.has(value)) { items[value] = value; return value; } return false; }; // 删除元素 this.remove = function(value) { // 集合不重复 - 先检查元素是否存在 if (this.has(value)) { delete items[value]; return true; } return false; }; // 清除集合 this.clear = function() { items = {}; }; // 获取集合长度 this.size = function() { // var count = 0; // for (var i in items) { // if (items.hasOwnProperty(i)) { // count++; // } // } // return count; return Object.keys(items).length; }; // 获取集合元素 this.value = function() { var values = []; for (var i in items) { if (items.hasOwnProperty(i)) { values.push(items[i]); } } return values; }; // 并集 this.union = function(oSet) { var sSet = new MySet(); // 获取自己的值 var arr = this.value(); for (var i in arr) { sSet.add(arr[i]); } // 操作另一个集合 var oarr = oSet.value(); for (var i in oarr) { sSet.add(oarr[i]); } return sSet; }; // 交集 this.intersection = function(oSet) { var sSet = new MySet(); // 获取自己的值 var arr = this.value(); for (var i in arr) { if (oSet.has(arr[i])) { sSet.add(arr[i]); } } return sSet; }; // 差集 this.difference = function(oSet) { var sSet = new MySet(); // 获取自己的值 var arr = this.value(); for (var i in arr) { if (!oSet.has(arr[i])) { sSet.add(arr[i]); } } return sSet; }; // 检查items this.getItem = function() { return items; }; }; var A = new MySet(); A.add(1); A.add(2); A.add(3); var B = new MySet(); B.add(2); B.add(3); B.add(4);
ES6 - set集合。
// ES6 set var s = new Set(); s.add(1); s.add(2); s.add(3); // 遍历 // s.forEach(function(value, value2, set) { // console.log(value); // console.log(value2); // console.log(set); // }); // 迭代器 var interator = s.entries(); interator.next(); interator.next(); interator.next(); interator.next(); // WeakSet // var w = new WeakSet(); // var obj = {'name': 'Brady'}; // w.add(obj); // console.log(w); var A = new Set(); A.add(1); A.add(2); A.add(3); var B = new Set(); B.add(2); B.add(3); B.add(4); // 并集 console.log(new Set([...A, ...B])); // 交集 console.log(new Set([...A].filter(item => B.has(item)))); // 差集 console.log(new Set([...A].filter(item => !B.has(item))));
相关文章推荐
- 集合框架_数据结构之栈和队列
- 数据结构——顺序(升序)链表(增加,删除,集合的并,交,差)
- List、Map、Set集合底层数据结构及实现原理
- python基础知识——内置数据结构(集合)
- JAVA数据结构之集合
- python 数据结构-集合set
- 步步为营(十二)常用数据结构(5)STL-Set(集合)
- Python数据结构之集合Set
- 集合框架_数据结构之数组和链表
- windows基础数据结构盲点集合
- 数据结构之顺序表(集合的交并差)
- 数据结构之集合的顺序存储结构https://www.jianshu.com/p/f8a7d52787eb
- java 将数据字典(父子结构)绑定成List集合(第二种写法)
- 集合框架(数据结构之链表二)--------(上一篇补充)
- [数据结构实验]集合交并
- 数据结构笔记(一)线性表的顺序表示和基本操作及其顺序表实现的集合运算(A-B)U(B-A)实例
- java数据结构之集合
- 数据结构之集合之迭代器并发修改异常与逆序遍历之源码剖析
- Redis 数据结构 集合(set)(五)
- 算法 数据结构 集合