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操作FRAME中的IFRAME及其内容的实现代码
Jul 26 Javascript
让元素在网页中可拖动示例代码
Aug 13 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
通过遮罩层实现浮层DIV登录的js代码
Feb 07 Javascript
Javascript验证方法大全
Sep 21 Javascript
浅谈angularjs $http提交数据探索
Jan 20 Javascript
bootstrap multiselect下拉列表功能
Aug 22 Javascript
详解如何在vue项目中引入elementUI组件
Feb 11 Javascript
Vue实现点击后文字变色切换方法
Feb 11 Javascript
微信小程序实现打卡日历功能
Sep 21 Javascript
js实现无缝轮播图效果
Mar 09 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
May 17 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
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
Python爬豆瓣电影实例
2018/02/23 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
python中类与对象之间的关系详解
2020/12/16 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
个人素质的自我评价分享
2013/12/16 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
青春励志演讲稿
2014/04/29 职场文书
新学期开学标语
2014/06/30 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
学习保证书怎么写
2015/02/26 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
详解python网络进程
2021/06/15 Python
为Centos安装指定版本的Docker
2022/04/01 Servers