博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript数据结构——模仿ES6中定义的类似的Set类
阅读量:6243 次
发布时间:2019-06-22

本文共 1819 字,大约阅读时间需要 6 分钟。

1 function Set(){  2     var items={};  3   4     this.has=function(value){  5         return items.hasOwnProperty(value);  6     };  7   8     this.add=function(value){  9         if(!this.has(value)){ 10             items[value]=value; 11             return true; 12         } 13         return false; 14     }; 15  16     this.remove=function(value){ 17         if(this.has(value)){ 18             delete items[value]; 19             return true; 20         } 21         return false; 22     }; 23  24     this.clear=function(){ 25         items={}; 26     }; 27  28     //方法一:ES5以上 29 /*    this.size=function(){ 30         return Object.keys(items).length; 31     }*/ 32  33     //方法二:兼容新较强 34     //hasOwnProperty()用于排除items原型自身的属性 35     this.size=function(){ 36         var count=0; 37         for(var prop in items){ 38             if(items.hasOwnProperty(prop)){ 39                 count++; 40             } 41         } 42         return count; 43     }; 44  45     //方法一:ES5以上 46     /*this.values=function(){ 47         return Object.keys(items); 48     };*/ 49  50     //兼容性比较强 51     this.values=function(){ 52         var keys=[]; 53         for(var key in items){ 54             if(items.hasOwnProperty(key)){ 55                 keys.push(key); 56             } 57         } 58         return keys; 59     }; 60  61  62     //集合的并操作 63     this.union=function(otherSet){ 64         var unionSet = new Set(); 65         var values=this.values(); 66         for(var i=0;i
otherSet.size()){104 return false;105 }else{106 var values=this.values();107 for(var i=0;i

这个实现中,比较需要注意的是,set类即是数学概念上的集合,集合中的元素不得重复,具有唯一性。所以用对象初始化items,可以利用键值对的唯一性特点实现集合的性质。相关的集合性质可以查看数学集合概念知识。上述例子可以自行编写一些简单的html例子实现。

转载于:https://www.cnblogs.com/synchronize/p/6741700.html

你可能感兴趣的文章
作业七 总结
查看>>
Oracle的静默安装 升级和卸载 参考规范
查看>>
高效存储过程分页
查看>>
电脑用U盘启动
查看>>
Web漏洞扫描
查看>>
使用xtrabackup做数据库的增量备份
查看>>
“程序已停止工作”问题的解决方法,停止解决方法
查看>>
[c++] 幂法求特征向量
查看>>
WEB项目(B/S系统)打包安装(总结篇)
查看>>
Cartographer源码阅读(8):imu_tracker
查看>>
U盘,移动硬盘显示显示需要格式化怎么修复
查看>>
JVM基础和调优(一)
查看>>
ICommand in Silverlight
查看>>
复选框、单选按钮、下拉列表的定义
查看>>
webdynpro的select_option示例
查看>>
img src 使用 base64 图片数据
查看>>
MapReduce计算每年最高温度
查看>>
Ruby快速入门
查看>>
UVA 12118 Inspector's Dilemma(连通性,欧拉路径,构造)
查看>>
一台电脑同时运行多个tomcat配置方法
查看>>