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 相关文章推荐
jQuery学习3:操作元素属性和特性
Feb 07 Javascript
Exjs 入门篇
Apr 07 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
清除div下面的所有标签的方法
Feb 17 Javascript
jQuery获取标签文本内容和html内容的方法
Mar 27 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
JS实现左右无缝轮播图代码
May 01 Javascript
Javascript中的arguments对象
Jun 20 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
微信小程序滑动选择器的实现代码
Aug 10 Javascript
微信小程序wx.request的简单封装
Nov 13 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
使用Apache的rewrite技术
2006/06/22 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
js tab效果的实现代码
2009/12/26 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
Python中的字符串替换操作示例
2016/06/27 Python
Python 字典与字符串的互转实例
2017/01/13 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
深入浅析Python的类
2018/06/22 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
python3安装crypto出错及解决方法
2019/07/30 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
东方红海科技面试题软件测试方面
2012/02/08 面试题
写给女朋友的道歉信
2014/01/12 职场文书
终止合同协议书
2014/04/17 职场文书
小学英语课后反思
2014/04/26 职场文书
考核评语大全
2014/04/29 职场文书
房地产开发项目建议书
2014/05/16 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android