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中的View-Model使用介绍
Aug 11 Javascript
ajax不执行success回调而是执行了error回调
Dec 10 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
jQuery+HTML5加入购物车代码分享
Oct 29 Javascript
JavaScript日期对象(Date)基本用法示例
Jan 18 Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 Javascript
基于 webpack2 实现的多入口项目脚手架详解
Jun 26 Javascript
vue实现底部菜单功能
Jul 24 Javascript
Node.js + express基本用法教程
Mar 14 Javascript
vue组件传值的实现方式小结【三种方式】
Feb 05 Javascript
JS面向对象编程实现的拖拽功能案例详解
Mar 03 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
详解如何使用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在文件指定行中写入代码的方法
2012/05/23 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
Django框架下在视图中使用模版的方法
2015/07/16 Python
python模拟Django框架实例
2016/05/17 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
html5的canvas方法使用指南
2014/12/15 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
审核会计岗位职责
2013/11/08 职场文书
单位工作证明
2014/10/07 职场文书
会议通知格式范文
2015/04/15 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
python如何利用traceback获取详细的异常信息
2021/06/05 Python
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫