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 相关文章推荐
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
Apr 06 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
vue cli2.0单页面title修改方法
Jun 07 Javascript
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
全面解析vue router 基本使用(动态路由,嵌套路由)
Sep 02 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
原生js实现3D轮播图
Mar 21 Javascript
layui动态渲染生成select的option值方法
Sep 23 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
Mar 07 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
May 09 Javascript
Vue2.0搭建脚手架
Mar 13 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注入实例
2006/10/09 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python 内置函数filter
2017/06/01 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
简单了解python关系(比较)运算符
2019/07/08 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
求职信内容怎么写
2014/05/26 职场文书
趣味运动会策划方案
2014/06/02 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
2014年服务员工作总结
2014/11/18 职场文书
向女朋友道歉的话
2015/01/20 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
创业计划书之熟食店
2019/10/16 职场文书
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript