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 相关文章推荐
Prototype1.6 JS 官方下载地址
Nov 30 Javascript
javascript 动态创建表格
Jan 08 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
js注册时输入合法性验证方法
Oct 21 Javascript
浅析node.js的模块加载机制
May 25 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
Sep 29 Javascript
React降级配置及Ant Design配置详解
Dec 27 Javascript
深入koa-bodyparser原理解析
Jan 16 Javascript
Layui Form 自定义验证的实例代码
Sep 14 Javascript
openLayer4实现动态改变标注图标
Aug 17 Javascript
解决vue打包报错Unexpected token: punc的问题
Oct 24 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
深入php self与$this的详解
2013/06/08 PHP
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python中的tuple元组详细介绍
2015/02/02 Python
Python中的urllib模块使用详解
2015/07/07 Python
利用python代码写的12306订票代码
2015/12/20 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
pyqt5中动画的使用详解
2020/04/01 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
医学检验专业个人求职信范文
2013/12/04 职场文书
迟到检讨书5000字
2014/01/31 职场文书
导游词之江南周庄
2019/12/06 职场文书
SQL Server中的游标介绍
2022/05/20 SQL Server
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库