JS集合set类的实现与使用方法示例


Posted in Javascript onFebruary 01, 2019

本文实例讲述了JS集合set类的实现与使用方法。分享给大家供大家参考,具体如下:

js集合set类的实现

/*js集合set类的实现*/
function Set() {
  this.dataStore = [];
  this.add = add;//新增元素
  this.remove = remove;//删除元素
  this.size = size;//集合的元素个数
  this.union = union;//求并集
  this.contains = contains;//判断一个集合中是否包含某个元素
  this.intersect = intersect;//交集
  this.subset = subset;//判断一个集合是否是另一个的子集
  this.difference = difference;//求补集
  this.show = show;//将集合元素显示出来
}
function add(data) {
  if (this.dataStore.indexOf(data) < 0) {
    this.dataStore.push(data);
    return true;
  }
  else {
    return false;
  }
}
function remove(data) {
  var pos = this.dataStore.indexOf(data);
  if (pos > -1) {
    this.dataStore.splice(pos,1);
    return true;
  }
  else {
    return false;
  }
}
function size() {
  return this.dataStore.length;
}
function show() {
  return "[" + this.dataStore + "]";
}
function contains(data) {
  if (this.dataStore.indexOf(data) > -1) {
    return true;
  }
  else {
    return false;
  }
}
function union(set) {
  var tempSet = new Set();
  for (var i = 0; i < this.dataStore.length; ++i) {
    tempSet.add(this.dataStore[i]);
  }
  for (var i = 0; i < set.dataStore.length; ++i) {
    if (!tempSet.contains(set.dataStore[i])) {
      tempSet.dataStore.push(set.dataStore[i]);
    }
  }
  return tempSet;
}
function intersect(set) {
  var tempSet = new Set();
  for (var i = 0; i < this.dataStore.length; ++i) {
    if (set.contains(this.dataStore[i])) {
      tempSet.add(this.dataStore[i]);
    }
  }
  return tempSet;
}
function subset(set) {
  if (this.size() > set.size()) {
    return false;
  }
  else {
    for(var member in this.dataStore) {
      if (!set.contains(member)) {
        return false;
      }
    }
  }
  return true;
}
function difference(set) {
  var tempSet = new Set();
  for (var i = 0; i < this.dataStore.length; ++i) {
    if (!set.contains(this.dataStore[i])) {
      tempSet.add(this.dataStore[i]);
    }
  }
  return tempSet;
}
/*测试例子:求补集。属于集合cis,不属于集合it*/
var cis = new Set();
var it = new Set();
cis.add("Clayton");
cis.add("Jennifer");
cis.add("Danny");
it.add("Bryan");
it.add("Clayton");
it.add("Jennifer");
var diff = new Set();
diff = cis.difference(it);
console.log(cis.show() + " difference " + it.show() + " -> " + diff.show());

这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JS集合set类的实现与使用方法示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
利用JavaScript检测CPU使用率自己写的
Mar 22 Javascript
javascript实现输出指定行数正方形图案的方法
Aug 03 Javascript
深入探究AngularJS框架中Scope对象的超级教程
Jan 04 Javascript
jquery ztree实现树的搜索功能
Feb 25 Javascript
Javascript中arguments对象的详解与使用方法
Oct 04 Javascript
浅析如何利用angular结合translate为项目实现国际化
Dec 08 Javascript
解决修复npm安装全局模块权限的问题
May 17 Javascript
ES6 class的应用实例分析
Jun 27 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
Nov 26 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
Sep 09 Javascript
elementui实现预览图片组件二次封装
Dec 29 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 #jQuery
详解Vue中watch对象内属性的方法
Feb 01 #Javascript
JS字典Dictionary类定义与用法示例
Feb 01 #Javascript
在 Vue.js中优雅地使用全局事件的方法
Feb 01 #Javascript
微信小程序实现的动态设置导航栏标题功能示例
Jan 31 #Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
Jan 31 #Javascript
JS基于对象的链表实现与使用方法示例
Jan 31 #Javascript
You might like
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
心得体会开头
2014/01/01 职场文书
全神贯注教学反思
2014/02/03 职场文书
就业协议书的作用
2014/04/11 职场文书
团队队名口号大全
2014/06/06 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
店铺转让协议书
2014/12/02 职场文书
公务员年度考核评语
2014/12/31 职场文书
教师思想工作总结2015
2015/05/13 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
python中%格式表达式实例用法
2021/06/18 Python
Python制作春联的示例代码
2022/01/22 Python
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android