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 相关文章推荐
JS 常用校验函数
Mar 26 Javascript
jqPlot jquery的页面图表绘制工具
Jul 25 Javascript
jquery dialog键盘事件代码
Aug 01 Javascript
javascript自动改变文字大小和颜色的效果的小例子
Aug 02 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
Nov 30 Javascript
深入剖析JavaScript面向对象编程
Jul 12 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
Jul 22 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
Mar 09 Javascript
angularJS之$http:与服务器交互示例
Mar 17 Javascript
webpack构建换肤功能的思路详解
Nov 27 Javascript
babel的使用及安装配置教程
Feb 22 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
Jul 22 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中if和or运行效率对比
2014/12/12 PHP
使用URL传输SESSION信息
2015/07/14 PHP
AJAX的使用方法详解
2017/04/29 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
在python中求分布函数相关的包实例
2020/04/15 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
python Pexpect模块的使用
2020/12/25 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
财务管理个人自荐书范文
2013/11/24 职场文书
初三家长会邀请函
2014/01/18 职场文书
大学生求职信
2014/06/17 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
学生通报表扬范文
2015/05/04 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
python实现简单石头剪刀布游戏
2021/10/24 Python