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里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...
随机推荐
- DRBD+Heartbeat实现自动切换
1>HeartBeat介绍 Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项 ...
- [翻译] Writing Property Editors 编写属性编辑器
Writing Property Editors 编写属性编辑器 When you select a component in the designer its properties are di ...
- [C#]DES再一例(转)
public class Encrypt { internal string ToEncrypt(string encryptKey, string str) { try { byte[] P_byt ...
- 搭建自己的 Docker 私有仓库服务
关于 Docker 的介绍这里就省了,Docker 在其相关领域的火爆程度不亚于今年汽车行业里的特斯拉,docCloud 甚至把公司名都改成了 Docker, Inc. 好东西总是传播很快,我们现在已 ...
- solr特点四: SpellCheck(拼写检查)
接下来,我将介绍如何向应用程序添加 “您是不是要找……”(拼写检查). 提供拼写建议 Lucene 和 Solr 很久以前就开始提供拼写检查功能了,但直到添加了 SearchComponent架构之后 ...
- centos 下wps 与goland 不能输入中文的解决办法
输入法:CentOS7自带ibus,如果你用的是fcitx请在对应的地方进行修改 系统:CentOS7,这个方案应该适用于大多数Linux发行版本 intelliJ goland中文输入法问题解决 首 ...
- [C#学习笔记]分部类和分部方法
知识在于积累. 前言 好久没写博客了,因为在看<CLR via C#>的时候,竟然卡在了分部方法这一小节几天没下去.今天重新认真阅读,有些感悟,所以在此记录. 然后. 每天早晨第一句,&l ...
- C# SQLite 数据库
数据库 Oracle.Oracle的应用,主要在传统行业的数据化业务中,比如:银行.金融这样的对可用性.健壮性.安全性.实时性要求极高的业务 MS SQL Server.windows生态系统的产品, ...
- C# BackgroundWorker 的使用、封装
示例代码: PT_USER_INFO user = new PT_USER_INFO(); IList<TES_COMBAT_TASK> taskList = new List<TE ...
- 原生 javaScript 百叶窗 效果的实现及原理介绍
百叶窗大家都见过吧!如图: 原理: 如图所示,空心格子就好比是每个li,给它设定相对定位属性,设置overflow:hidden: 黑块为li子元素,高度为li的2倍,设置absolute属性,我们正 ...