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 相关文章推荐
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
Jan 15 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
javascript模拟实现ajax加载框实例
Oct 15 Javascript
浅谈轻量级js模板引擎simplite
Feb 13 Javascript
js实现刷新iframe的方法汇总
Apr 27 Javascript
Js遍历键值对形式对象或Map形式的方法
Aug 08 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
vue实现在表格里,取每行的id的方法
Mar 09 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 Javascript
JS实现简单日历特效
Jan 03 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
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
jquery中获取select选中值的代码
2011/06/27 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
python实现的各种排序算法代码
2013/03/04 Python
Python和php通信乱码问题解决方法
2014/04/15 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
浅谈Python中函数的参数传递
2016/06/21 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
python opencv实现图像边缘检测
2019/04/29 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
python实现简单的购物程序代码实例
2020/03/03 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
python爬虫基础之urllib的使用
2020/12/31 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
Nike香港官网:Nike HK
2019/03/23 全球购物
自我鉴定怎么写
2013/12/05 职场文书
高一数学教学反思
2014/02/07 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
师德师风自我评价范文
2014/09/11 职场文书