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是怎么继承的介绍
Jan 05 Javascript
js判断字符长度及中英文数字等
Mar 19 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
Jan 08 Javascript
canvas实现环形进度条效果
Mar 23 Javascript
浅谈angular4生命周期钩子
Sep 05 Javascript
js匿名函数使用&amp;传参(实例)
Sep 08 Javascript
vue动态删除从数据库倒入列表的某一条方法
Sep 29 Javascript
微信小程序带动画弹窗组件使用方法详解
Nov 27 Javascript
解决layer 动态加载select 失效的问题
Sep 18 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 Javascript
Jquery让form表单异步提交代码实现
Nov 14 jQuery
详解如何使用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类的反射用法实例
2014/11/03 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
Python Web框架Tornado运行和部署
2020/10/19 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
介绍下WebSphere的安全性
2013/01/31 面试题
会计出纳岗位职责
2013/12/25 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
护校行动方案
2014/05/31 职场文书
行政求职信
2014/07/04 职场文书
python常见的占位符总结及用法
2021/07/02 Python
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android