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最新动画教程+iso光盘下载
Jan 22 Javascript
JS 文件传参及处理技巧分析
May 13 Javascript
js设置function参数默认值(适合没有传参情况)
Feb 24 Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 Javascript
js实现select组件的选择输入过滤代码
Oct 14 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
fastclick插件导致日期(input[type=&quot;date&quot;])控件无法被触发该如何解决
Nov 09 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
Feb 16 Javascript
node.js操作mongodb简单示例分享
May 25 Javascript
Bootstrap table使用方法记录
Aug 23 Javascript
angularJs select绑定的model取不到值的解决方法
Oct 08 Javascript
layui实现二维码弹窗、并下载到本地的方法
Sep 25 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
php实现分页工具类分享
2014/01/09 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
让textarea自动调整大小的js代码
2011/04/12 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
Python中的迭代器漫谈
2015/02/03 Python
Python中的ceil()方法使用教程
2015/05/14 Python
简单上手Python中装饰器的使用
2015/07/12 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
python进行TCP端口扫描的实现
2018/12/21 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
水污染治理专业毕业生推荐信
2013/11/14 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
委托书的写法
2014/08/30 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
先进单位申报材料
2014/12/25 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
房屋产权证明书
2015/06/19 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript
python3实现常见的排序算法(示例代码)
2021/07/04 Python
python数字图像处理之图像的批量处理
2022/06/28 Python
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL