js数据结构之集合的详细实现方法
数据结构中的集合,类似于数学中常说的集合,是一类数据的群组。集合与集合之间还存在交集,并集,补集的运算。
function SetClass () {
this.dataList = [];
this.add = function (data) {
if (this.dataList.indexOf(data)<0) {
this.dataList.push(data);
return true;
}
return false;
};
this.remove = function (data) {
var index = this.dataList.indexOf(data);
if (index > -1) {
this.dataList.splice(index, 1);
return true;
}
return false;
};
this.size = function () {
return this.dataList.length;
};
this.show = function () {
return this.dataList;
};
this.contains = function (data) {
if (this.dataList.indexOf(data)!=-1) {
return true;
}
return false;
};
// 并集
this.union = function (targetSet) {
var tempSet = new SetClass();
targetSet.show().forEach(function (item, i) {
tempSet.add(item);
});
this.dataList.forEach(function (item, i) {
if (!tempSet.contains(item)) {
tempSet.add(item);
}
});
return tempSet;
};
// 交集
this.intersect = function (targetSet) {
var tempSet = new SetClass();
this.dataList.forEach(function (item, i) {
if (targetSet.contains(item)) {
tempSet.add(item);
}
});
return tempSet;
};
// 判断当前集合是否是目标集合的子集
this.subset = function (targetSet) {
if (this.size() > targetSet.size()) return false;
this.dataList.forEach(function (item, i) {
if (!targetSet.contains(item)) {
return false;
}
});
return true;
};
// 补集:targetSet中不存在,this.dataList中存在
this.difference = function (targetSet) {
var tempSet = new SetClass();
this.dataList.forEach(function (item, i) {
if (!targetSet.contains(item)) {
tempSet.add(item);
}
});
return tempSet;
};
}
集合的使用方法如下:
var testSet = new SetClass();
var testSet2 = new SetClass();
var testSet3 = new SetClass();
testSet.add("a");
testSet.add("b");
testSet.add("c");
testSet.add("d");
testSet.add("e");
testSet2.add("d");
testSet2.add("e");
testSet2.add("f");
testSet2.add("g");
testSet2.add("h");
testSet3.add("a");
testSet3.add("b"); console.log(testSet.difference(testSet3));
js数据结构之集合的详细实现方法的更多相关文章
- js数据结构之二叉树的详细实现方法
数据结构中,二叉树的使用频率非常高,这得益于二叉树优秀的性能. 二叉树是非线性的数据结构,用以存储带有层级的数据,其用于查找的删除的性能非常高. 二叉树 数据结构的实现方法如下: function N ...
- js数据结构之列表的详细实现方法
* 列表用于存放数据量较少的数据结构* 当数据量较大时,不需要对其进行查找.排序的情况下,使用列表也比较方便. 本数据结构在node环境下运行,需要对node有个基本是了解. 1. listSize: ...
- Js获取后台集合List的值和下标的方法
Js获取后台集合List的值和下标的方法 转载自:http://blog.csdn.net/XiaoKanZheShiJie/article/details/47280449 首先用的是struts2 ...
- 如何发布一个自定义Node.js模块到NPM(详细步骤,附Git使用方法)
咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...
- JS中数据结构之集合
集合(set)是一种包含不同元素的数据结构.集合中的元素称为成员.集合的两个最重要特性是:首先,集合中的成员是无序的:其次,集合中不允许相同成员存在.当你想要创建一个数据结构用来保存一些独一无二的元素 ...
- 学习javascript数据结构(三)——集合
前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...
- JS之BOM和DOM(来源、方法、内容、应用)
1.Javascript组成(此文为转载) JavaScript的实现包括以下3个部分: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方 ...
- Java集合框架详细总结
一:Collection集合 呼~,历过好几天的奋战终于把集合框架肝完了,b站某马老师讲的是真的非常详细而且动听,原理给你分析得明明白白的,此前也找了许多关于集合这一大章节的视频,发现更多的是针对于使 ...
- JS数据结构之 Map
JS数据结构之 Map Map介绍 Map(映射)是ES6引入的一种数据结构.这是一种存储键值对列表很方便的方法,类似于其他编程语言的哈希表. HashMap(哈希表),也叫做散列表.是根据关键码值 ...
随机推荐
- DSO windowed optimization 代码 (1)
这里不想解释怎么 marginalize,什么是 First-Estimates Jacobian (FEJ).这里只看看代码,看看Hessian矩阵是怎么构造出来的. 1 优化流程 整个优化过程,也 ...
- 「About Blockchain(一)」达沃斯年会上的区块链
「About Blockchain(一)」 --达沃斯年会上的区块链 写在前面:1月23日到26日,在瑞士达沃斯召开了第48届世界经济论坛.这个新闻本没有引起我格外的关注,直到前两天张老师分享给我一篇 ...
- 搭建Modelsim SE仿真环境-使用do文件仿真
本章我们介绍仿真环境搭建是基于Modelsim SE的.Modelsim有很多版本,比如说Modelsim-Altera,但是笔者还是建议大家使用Modelsim-SE,Modelsim-Altera ...
- SIFT feature
转载:http://www.cnblogs.com/wangguchangqing/p/4853263.html 1.SIFT概述 SIFT的全称是Scale Invariant Feature Tr ...
- nodejs package.json解释
{ "name": "node-echo", # 包名,在NPM服务器上须要保持唯一 "version": "1.0.0" ...
- centos环境无法安装paramiko的问题解决
yum install openssl-devel yum install pycrypto yum install python-devel 全部安装完毕后执行pip install paramik ...
- 『转载』hadoop2.x常用端口、定义方法及默认端口
『转载』hadoop2.x常用端口.定义方法及默认端口 1.问题导读 DataNode的http服务的端口.ipc服务的端口分别是哪个? NameNode的http服务的端口.ipc服务的端口分别是哪 ...
- C/C++:函数调用规则__stdcall,__cdecl,__pascal,__fastcall
__cdecl __cdecl 是 C Declaration 的缩写,表示 C 语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈.被调用函数不会要求调用者传递多 ...
- Jenkins中配置selenium测试
Jenkins中配置selenium测试 2015/03/23 第一步在jenkins中配置selenium服务器 第二步工程配置: 第三步:执行构建: 第四步,查看报告:
- mysql语句判断是否存在记录,没有则插入新纪录否则不执行
1 前言 由于项目需要,当某个表如果有记录,就不执行加入语句,否则加入新纪录(测试数据).思路是:判断表的记录是否为空,然后再决定是否插入 2 代码 DROP PROCEDURE IF EXISTS ...