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 相关文章推荐
jQuery选择器源码解读(五):tokenize的解析过程
Mar 31 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
May 15 Javascript
全面解析Bootstrap中transition、affix的使用方法
May 30 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
Jul 10 Javascript
JS排序之冒泡排序详解
Apr 08 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
May 28 Javascript
实现单层json按照key字母顺序排序的示例
Dec 06 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
May 21 jQuery
node中间层实现文件上传功能
Jun 11 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
electron 安装,调试,打包的具体使用
Nov 06 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 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 存取 MySQL 数据库的一个例子
2006/10/09 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
javascript事件模型代码
2007/07/01 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
angular多语言配置详解
2019/05/16 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
python中文编码问题小结
2014/09/28 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
python实现ID3决策树算法
2017/12/20 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Python多线程的退出控制实现
2020/08/10 Python
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
事业单位请假制度
2014/01/13 职场文书
应届生求职自荐信
2014/07/04 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
英语通知范文
2015/04/22 职场文书
三八妇女节主持词
2015/07/04 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers