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实现的所谓的滑动门
May 23 Javascript
Angular2从搭建环境到开发步骤详解
Oct 17 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
Nov 26 Javascript
bootstrap输入框组件使用方法详解
Jan 19 Javascript
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
详解AngularJS2 Http服务
Jun 26 Javascript
JavaScript实现无刷新上传预览图片功能
Aug 02 Javascript
使用gulp构建前端自动化的方法示例
Dec 25 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 Javascript
js实现点击烟花特效
Oct 14 Javascript
WebRTC记录音视频流(web技术分享)
Feb 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 获取可变函数参数的函数
2009/08/26 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
php链表用法实例分析
2015/07/09 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
详解Python字符串对象的实现
2015/12/24 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
Python工程师面试必备25条知识点
2018/01/17 Python
python3中eval函数用法使用简介
2019/08/02 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
职业规划书如何设计?
2014/01/09 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
环卫个人总结
2015/03/03 职场文书
战友聚会致辞
2015/07/28 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
mysql中关键词exists的用法实例详解
2022/06/10 MySQL