数据结构中的集合,类似于数学中常说的集合,是一类数据的群组。集合与集合之间还存在交集,并集,补集的运算。

***集合为无序,集合内元素不重复
***js的set基于数组, 使用SetClass为类名,区别于ES6
 
 
集合的实现方法如下:
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数据结构之集合的详细实现方法的更多相关文章

  1. js数据结构之二叉树的详细实现方法

    数据结构中,二叉树的使用频率非常高,这得益于二叉树优秀的性能. 二叉树是非线性的数据结构,用以存储带有层级的数据,其用于查找的删除的性能非常高. 二叉树 数据结构的实现方法如下: function N ...

  2. js数据结构之列表的详细实现方法

    * 列表用于存放数据量较少的数据结构* 当数据量较大时,不需要对其进行查找.排序的情况下,使用列表也比较方便. 本数据结构在node环境下运行,需要对node有个基本是了解. 1. listSize: ...

  3. Js获取后台集合List的值和下标的方法

    Js获取后台集合List的值和下标的方法 转载自:http://blog.csdn.net/XiaoKanZheShiJie/article/details/47280449 首先用的是struts2 ...

  4. 如何发布一个自定义Node.js模块到NPM(详细步骤,附Git使用方法)

    咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...

  5. JS中数据结构之集合

    集合(set)是一种包含不同元素的数据结构.集合中的元素称为成员.集合的两个最重要特性是:首先,集合中的成员是无序的:其次,集合中不允许相同成员存在.当你想要创建一个数据结构用来保存一些独一无二的元素 ...

  6. 学习javascript数据结构(三)——集合

    前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...

  7. JS之BOM和DOM(来源、方法、内容、应用)

    1.Javascript组成(此文为转载) JavaScript的实现包括以下3个部分: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方 ...

  8. Java集合框架详细总结

    一:Collection集合 呼~,历过好几天的奋战终于把集合框架肝完了,b站某马老师讲的是真的非常详细而且动听,原理给你分析得明明白白的,此前也找了许多关于集合这一大章节的视频,发现更多的是针对于使 ...

  9. JS数据结构之 Map

    JS数据结构之 Map Map介绍 Map(映射)是ES6引入的一种数据结构.这是一种存储键值对列表很方便的方法,类似于其他编程语言的哈希表. HashMap(哈希表),也叫做散列表.是根据关键码值 ...

随机推荐

  1. js获取当前日期时间“yyyy-MM-dd HH:MM:SS”

    获取当前的日期时间 格式“yyyy-MM-dd HH:MM:SS” 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 function getNowFormatDat ...

  2. C#的五种访问修饰符

    简述: 所有类型和类型成员都具有可访问性级别,用来控制是否可以在您程序集的其他代码中或其他程序集中使用它们. 可使用访问修饰符指定声明类型或成员的可访问性. 在C#语言中,共有五种访问修饰符:publ ...

  3. Dubbo配置参数的优先级

    总结为: 1).Java运行时虚拟机参数 eg:-Ddubbo.protocol.port=20880 2).dubbo.xml || application.properties(SpringBoo ...

  4. 【转】Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)

    [转]Python之xml文档及配置文件处理(ElementTree模块.ConfigParser模块) 本节内容 前言 XML处理模块 ConfigParser/configparser模块 总结 ...

  5. W-GAN系 (Wasserstein GAN、 Improved WGAN)

    学习总结于国立台湾大学 :李宏毅老师 WGAN前作:Towards Principled Methods for Training Generative Adversarial Networks  W ...

  6. Linux下rsyslog日志收集服务环境部署记录【转】

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  7. shell script中read的用法

    1.read基本读取 #!/bin/bash #testing the read command echo -n "Enter you name:" #echo -n 让用户直接在 ...

  8. eclipse配置JDK

    配置JDK 注意:此处配置的是JDK安装路径,不是JRE!!!

  9. 通达OA数据库优化方案之_历史数据清理

    整体思路: 1.备份现有系统数据,提供一个可以查询历史的入口(可以查询2015年6月份以前的所有OA产生的流程) 2.删除生产环境中2015年6月份以前的流程 为避免影响考勤,暂定在本月考勤定稿后实施 ...

  10. 前端开发必须知道的JS(一) 原型和继承

    原型和闭包是Js语言的难点,此文主要讲原型及原型实现的继承,在(二)中会讲下闭包,希望对大家有所帮助.若有疑问或不正之处,欢迎提出指正和讨论. 一. 原型与构造函数 Js所有的函数都有一个protot ...