博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript数据结构与算法——集合
阅读量:6695 次
发布时间:2019-06-25

本文共 2139 字,大约阅读时间需要 7 分钟。

1.集合数据结构

集合是一组无序且唯一(不能重复)的项组成的。这个数据结构使用了和有限集合相同的数学概念。

2.创建集合

function Set() {    // 这里使用对象而不是数组来表示集合     // js对象中不允许一个键值指向两个不同属性,也保证了集合中的元素都是唯一的    let items = {};    //1.首先实现has(value)方法    this.has = function(value) {        return value in items;        //return items.hasOwnProperty(value);    }    //2.向集合添加一个项    this.add = function(value) {        if (!this.has(value)) {            items[value] = value;            return true;        } else{            return false;        }    }    //3.移除某一项和清空集合    this.remove = function(value) {        if (this.has(value)) {            delete items[value];            return true;        } else{            return false;        }    }    this.clear = function() {        items = {};    }    //4.返回集合长度    this.size = function() {        return Object.keys(items).length;    }    // 兼容性更好    this.sizeLegacy = function() {        let count = 0;        for(let key in items) {            if(items.hasOwnProperty(key))                 ++count;        }        return count;    }    //5.返回一个包含集合中所有值的数组    this.values = function() {        let values = [];        for (let i = 0, keys=Object.keys[items]; i < keys.length; i++) {            values.push(items[keys[i]])        };        return values;    }    // 兼容性更好    this.valuesLegacy = function() {        let values = [];        for (let key in items) {            if(items.hasOwnProperty(key)) {                values.push(items[keys)            }        };        return values;    }}

集合的使用

let set = new Set();set.add(1);console.log(set.values()); // ['1']console.log(set.has(1)); // trueconsole.log(set.size()); // 1set.add(2);console.log(set.values()); // ['1', '2']console.log(set.has(2)); // trueconsole.log(set.size()); // 2set.remove(1);console.log(set.values()); // ['2']console.log(set.has(1)); // falseconsole.log(set.size()); // 1

3.集合的操作

集合有:并集、交集、差集、子集

// 1.实现并集this.union = function(otherSet) {    let unionSet = new Set();    let values = this.values();    for(let i=0; i
otherSet.size()) { return false; } else { let values = this.values(); for(let i=0; i

在es6中新增了set类,我们也可以使用其中自带的方法。

转载地址:http://pqvoo.baihongyu.com/

你可能感兴趣的文章
Android动画的实现 上
查看>>
(一)FlexViewer之整体框架解析
查看>>
JAVA数组的定义及用法
查看>>
codeblocks
查看>>
〖Linux〗穿越城墙之后,直接连接国内网站的路由配置
查看>>
读书笔记2014第13本:《富爸爸,穷爸爸》
查看>>
线程让出实验【RT-Thread学习笔记 4】
查看>>
免费社交类图标集
查看>>
参加第三届信息化创新克拉玛依国际学术论坛
查看>>
PKI系统深入介绍
查看>>
插入排序---希尔插入排序算法(Javascript版)
查看>>
简单实用的二级树形菜单hovertree
查看>>
linux(虚拟机中)与windows共享文件两种方法
查看>>
android系统特效详解和修改方法
查看>>
Hibernate的fetch
查看>>
C#多线程案例基础
查看>>
WPF中的动画——(一)基本概念
查看>>
SQL Server 固定角色
查看>>
c# Ftp下载程序源代码解析
查看>>
利用NPOI开源的读写Excel、WORD等微软OLE2组件读写execl,控制样式或单元格
查看>>