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 相关文章推荐
Code:loadScript( )加载js的功能函数
Feb 02 Javascript
asp 取文本框名称代码
Dec 02 Javascript
jQuery图片滚动图片的效果(另类实现)
Jun 02 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
jquery简单实现网页层的展开与收缩效果
Aug 07 Javascript
JQuery.Ajax()的data参数类型实例详解
Nov 20 Javascript
js实现上传图片及时预览
May 07 Javascript
JS原型对象的创建方法详解
Jun 16 Javascript
关于JS变量和作用域详解
Jul 28 Javascript
AngularJS 依赖注入详解及示例代码
Aug 17 Javascript
js canvas实现星空连线背景特效
Nov 01 Javascript
vuex state中的数组变化监听实例
Nov 06 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 中dirname(_file_)讲解
2007/03/18 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
简单的js分页脚本
2009/05/21 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
python 修改本地网络配置的方法
2019/08/14 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
《广玉兰》教学反思
2014/04/14 职场文书
公司员工活动策划方案
2014/08/20 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
工地材料员岗位职责
2015/04/11 职场文书
考勤制度通知
2015/04/25 职场文书
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers