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 快速构建可拖曳的购物车DragDrop
Nov 30 Javascript
有道JavaScript监听浏览器的问题
Jun 23 Javascript
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
setInterval计时器不准的问题解决方法
May 08 Javascript
jQuery实现checkbox全选的方法
Jun 10 Javascript
JavaScript中的原型继承基础学习教程
May 06 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
JS倒计时实例_天时分秒
Aug 22 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
vue轮播图插件vue-awesome-swiper
Nov 27 Javascript
JavaScript事件对象event用法分析
Jul 27 Javascript
基于JavaScript实现每日签到打卡轨迹功能
Nov 29 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类
2008/04/09 PHP
PHP内置加密函数详解
2016/11/20 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
javascript preload&amp;lazy load
2010/05/13 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
Python ljust rjust center输出
2008/09/06 Python
Python实现截屏的函数
2015/07/26 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Python中的With语句的使用及原理
2020/07/29 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
办公设备采购方案
2014/03/16 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
监守自盗观后感
2015/06/10 职场文书
防震减灾主题班会
2015/08/14 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python