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 跨浏览器开发经验总结(五) js 事件
May 19 Javascript
弹出最简单的模式化遮罩层的js代码
Dec 04 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
Jun 23 Javascript
JavaScript中Cookie操作实例
Jan 09 Javascript
JavaScript动态添加列的方法
Mar 25 Javascript
JS正则表达式比较常见用法
Jan 26 Javascript
TypeOf这些知识点你了解吗
Feb 21 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
Aug 24 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
JS实现带导航城市列表以及输入搜索功能
Jan 04 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 Javascript
JavaScript React如何修改默认端口号方法详解
Jul 28 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/07/29 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
python-str,list,set间的转换实例
2018/06/27 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
python之super的使用小结
2018/08/13 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
python join方法使用详解
2019/07/30 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Python用户自定义异常的实现
2020/12/25 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
教师聘用意向书
2015/05/11 职场文书
2016国培研修心得体会
2016/01/08 职场文书
创业计划书之便利店
2019/09/05 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Spring Boot实现文件上传下载
2022/08/14 Java/Android