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

***集合为无序,集合内元素不重复
***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方式Ajax/ jquery方式Ajax / 伪 ajax /伪ajax 进阶方式

    DJANGO环境搭建: 目录文件: 关闭CSRF 添加目录文件路径 配置url 视图配置: index页面配置: 测试:(成功) 进入正题: ajax 通过GET提交数据至后台: <!DOCTY ...

  2. Java 集合系列0、概述

    概述: Collection 框架中 从最上层的核心主干可以看到:Iterator.Collection.Map 三个接口(拓展思考1)1.Collection 接口:主要包括了集合中的一些常用操作, ...

  3. 扫AR

  4. C#实现图片叠加,图片上嵌入文字,文字生成图片的方法

    /// <summary>     /// 图片叠加     /// </summary>     /// <param name="sender"& ...

  5. Tpcc-MySQL对mysql数据库进行性能测试报告、分析及使用gnuplot生成图表展示

    TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统. tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于 ...

  6. MyEclipse中如何配置默认jsp为UTF-8格式

  7. JOptionPane类提示框常用方法总结

    JOptionPane类封装了很多的方法,总结如下: 1.showMessageDialog 显示一个带有OK 按钮的模态对话框. 下面是几个使用showMessageDialog 的例子: Java ...

  8. Win7 x64 svn 服务器搭建

    SVN服务器搭建和使用   Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了 ...

  9. 基于axios创建的实例使用axios.all,报错:this.$http is not a function,但请求成功

    报以下错误: 原因: axios实例没有all这个方法,all是axios的静态方法 解决方法: 以下方法不是最好的,还没找到更好的解决办法,目前先这样解决.

  10. 扩展欧几里得,解线性同余方程 逆元 poj1845

    定理:对于任意整数a,b存在一堆整数x,y,满足ax+by=gcd(a,b) int exgcd(int a,int b,int &x,int &y){ ){x=,y=;return ...