JavaScript数据结构-14.集合
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>集合</title>
</head>
<body>
<script>
function Set(){
this.arr = [];
this.add = add;
this.remove = remove;
this.size = size;
this.union = union; //并集
this.intersect = intersect; //交集
this.subset = subset; //是否是子集
this.difference = difference; //补集
this.show = show;
this.contains = contains;
}
function contains(data){
return this.arr.indexOf(data)>-1 ? true:false;
}
function add(data){
if(this.arr.indexOf(data)<0){
this.arr.push(data);
return true;
}else{
return false;
}
} function remove(data){
var pos = this.arr.indexOf(data);
if(pos >-1){
this.arr.splice(pos,1);
return true;
}else{
return false;
}
} function show(){
return this.arr;
}
function union(set){
var temp = new Set();
for(var i = 0;i<this.arr.length;i++){
temp.add(this.arr[i]);
}
for(var i = 0;i<set.arr.length;i++){
if(!temp.contains(set.arr[i])){
temp.arr.push(set.arr[i]);
}
}
return temp;
} function intersect(set){
var temp = new Set();
for(var i=0;i<this.arr.length;i++){
if(set.contains(this.arr[i])){
temp.add(this.arr[i]);
}
}
return temp;
} function size(){
return this.arr.length;
}
function subset(set){
if(this.size() > set.size()){
return false;
}else{
for(var member in this.arr){
if(!set.contains(member)){
return false;
}
}
}
return true;
} function difference(set){
var temp = new Set();
for(var i= 0;i<this.arr.length;i++){
if(!set.contains(this.arr[i])){
temp.add(this.arr[i]);
}
}
return temp;
} //
var obj = new Set();
obj.add("zhangsan");
obj.add("lisi");
obj.add("wangwu");
obj.add("zhaoliu"); console.log(obj.show());
obj.remove("wangwu");
console.log(obj.show()); var obj1 = new Set();
obj1.add("javascript");
obj1.add("zhangsan"); console.log(obj.union(obj1));
console.log(obj.intersect(obj1));
console.log(obj.subset(obj1));
console.log(obj.difference(obj1));
</script>
</body>
</html>
JavaScript数据结构-14.集合的更多相关文章
- 学习javascript数据结构(三)——集合
前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...
- 学习javascript数据结构(二)——链表
前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...
- 学习javascript数据结构(四)——树
前言 总括: 本文讲解了数据结构中的[树]的概念,尽可能通俗易懂的解释树这种数据结构的概念,使用javascript实现了树,如有纰漏,欢迎批评指正. 原文博客地址:学习javascript数据结构( ...
- JavaScript数据结构——集合、字典和散列表
集合.字典和散列表都可以存储不重复的值. 在集合中,我们感兴趣的是每个值本身,并把它当作主要元素.在字典和散列表中,我们用 [键,值] 的形式来存储数据. 集合(Set 类):[值,值]对,是一组由无 ...
- 为什么我要放弃javaScript数据结构与算法(第六章)—— 集合
前面已经学习了数组(列表).栈.队列和链表等顺序数据结构.这一章,我们要学习集合,这是一种不允许值重复的顺序数据结构. 本章可以学习到,如何添加和移除值,如何搜索值是否存在,也可以学习如何进行并集.交 ...
- JavaScript数据结构与算法-集合练习
集合的实现 function Set () { this.dataStore = []; this.add = add; this.remove = remove; this.size = size; ...
- 为什么我要放弃javaScript数据结构与算法(第十一章)—— 算法模式
本章将会学习递归.动态规划和贪心算法. 第十一章 算法模式 递归 递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题.递归通常涉及函数调用自身. 递归函数是像下面能够直接调用自身的 ...
- 为什么我要放弃javaScript数据结构与算法(第九章)—— 图
本章中,将学习另外一种非线性数据结构--图.这是学习的最后一种数据结构,后面将学习排序和搜索算法. 第九章 图 图的相关术语 图是网络结构的抽象模型.图是一组由边连接的节点(或顶点).学习图是重要的, ...
- 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组
第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...
随机推荐
- [label][Smarty]Smarty使用心得
Smarty模板引擎,使用smarty好处就是可以实现页面缓存,从而加快了初始化之后的页面访问速度. 某种程度上,smarty模板确保了template页面的代码整洁,避免了HTML标记与PHP的混合 ...
- C#基础入门 六
C#基础入门 六 静态类进阶 静态构造方法 用于初始化任何静态数据,或用于执行仅需执行一次的特定操作,在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数,静态构造方法是无参数的. publ ...
- CentOS 系统状况查看
1 磁盘 iostat 安装 yum install sysstat iostat -x Linux -.el7.x86_64 (sdw2) 2017年03月07日 _x86_64_ ( CPU ...
- DNS本机可解析,其他主机通过本机无法解析问题
新建了一个redhat虚拟机,将此虚拟机作为dns服务器使用,配置完以后宿主机的dns服务器设置为配置好的虚拟机地址,结果总是显示no Server Reached,没有服务器可以到达,花了很长时间终 ...
- 基于python 3.5 所做的找出来一个字符串中最长不重复子串算法
功能:找出来一个字符串中最长不重复子串 def find_longest_no_repeat_substr(one_str): #定义一个列表用于存储非重复字符子串 res_list=[] #获得字符 ...
- Cesium开发实践汇总
一.简介.开发环境搭建 二.Viewer控件 三.地图图层介绍 四.地形介绍 五.坐标变换 六.CZML 七.3D模型
- JAVA实现长连接(含心跳检测)Demo
实现原理: 长连接的维持,是要客户端程序,定时向服务端程序,发送一个维持连接包的. 如果,长时间未发送维持连接包,服务端程序将断开连接. 客户端: Client通过持有Sock ...
- Exp1 PC平台逆向破解 20164323段钊阳
实验目标 学习两种方法运行代码片段,并学习如何注入运行任何Shellcode. 三个实验内容如下: 1.手工修改可执行文件,改变程序执行流程,直接跳转到getshell函数 2.利用foo函数的bof ...
- LOJ#2882. 「JOISC 2014 Day4」两个人的星座(计算几何)
题面 传送门 题解 我们发现如果两个三角形相离,那么这两个三角形一定存在两条公切线 那么我们可以\(O(n^2)\)枚举其中一条公切线,然后可以暴力\(O(n^3)\)计算 怎么优化呢?我们可以枚举一 ...
- LOJ#2076. 「JSOI2016」炸弹攻击(模拟退火)
题面 传送门 题解 退火就好了 记得因为答案比较小,但是温度比较高,所以在算\(\exp\)的时候最好把相差的点数乘上一个常数来让选取更劣解的概率降低 话虽如此然而我自己打的退火答案永远是\(0\)- ...