2019独角兽企业重金招聘Python工程师标准>>>

一、Set

1、定义:

一种类似数组的数据结构,但内部数据是唯一的,没有重复的数据

2、初始化语法:

可以接受一个数组或者类数组作为参数

var set = new Set([1,2,3,4,5]);

3、属性、方法:

  • set.size ==>内部数据数量
  • set.add() ==>添加某个值,返回Set结构本身,所以可以使用链式调用

set.add(6).add(7).add(8);

  • set.delete() ==> 删除某个值,返回一个布尔值,表示删除是否成功

set.delete(8)

  • set.has() ==> 返回一个布尔值,表示是否有这个数据

set.has(8)

  • set.clear() ==> 清楚所有成员,没有返回值

4、遍历方法

var set = new Set(['aaa','bbb','ccc'])

  • keys():返回一个键名遍历器(Iterator),然后使用for...of遍历

由于set结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys和values方法的行为完全一致

  • values():返回一个键值遍历器(Iterator),然后使用for...of遍历
  • entries():返回一个键值对遍历器(Iterator),然后使用for...of遍历
  • forEach():使用回调函数遍历每个函数
  • for..of
  • 扩展运算符(...)

5、使用:实现并集,交集,差集

let set1 = new Set([1,2,3,4,5,6]);

let set2 = new Set([4,5,6,7,8,9]);

//并集

let union = new Set([...set1,...set2]);

//[1,2,3,4,5,6,7,8,9]

//交集

let intersect = new Set([...set1].filter(x => set2.has(x)));

//[4,5,6]

//差集

let differece= new Set([...set1].filter(x => !set2.has(x)));

//[1,2,3,4]

二、WeakSet

1、概念:

1、WeakSet成员只能是对象

2、内部对象都是弱引用

即垃圾回收机制不会管WeakSet内是否有该对象,只要这个对象在其他地方没有被使用了,就会被回收;

这意味折无法引用WeakSet的数据,也就不能遍历了

2、初始化:

var arr = [[1,2],[3,4]];

var ws = new WeakSet(arr);

3、方法:

ws.add()

ws.delete()

ws.has()

4、注意:

1、WeakSet没有size属性

2、不能遍历,因为内部数据随时可能消失,遍历机制无法保证数据存在

用途:

1、储存Dom节点,不用担心这些节点从文档移除是会引发内存泄露

转载于:https://my.oschina.net/lcl6659/blog/1802898

ES6:Set数据结构相关推荐

  1. ES6 Map数据结构

    Map JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. ES6 提供了 Map 数据结构.它类似于对 ...

  2. es6之数据结构 set,WeakSet,mapWeakMap

    {let list = new Set();list.add(1);list.add(2);list.add(1);console.log(list); //Set(2) {1, 2} let arr ...

  3. 读阮一峰ES6—Set数据结构

    文章目录 ES6-Set的数据结构 ES6-Set的数据结构 1. 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,不会添加重复的值. const s = new ...

  4. ES6 WeakSet数据结构 与Set十分相似

    它与Set十分相似,对象的值也不能是重复的,与Set不同点: 1.WeakSet成员只能够是对象. 2.作为WeakSet成员的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是 ...

  5. 前端笔试题面试题记录(上)

    前言 过完元宵,就到上海找了波工作,现在已经入职好了,蹭波热点,写一波面试记录,内容包含笔试题和面试题,还有一些没有写进来,准备再开一篇,许久没写了,写的确实有些慢.如果喜欢的话可以点波赞,或者关注一 ...

  6. web前端数组处理之数组去重

    在web前端开发过程中避免会遇到很多数组需要处理,经常出现的问题就是数组去重,今天小千就来给大家介绍一下几种常见的数组去重的方式,大家可以学习一下以备不时之需. 数组去重概念:去除数组中重复重新的值 ...

  7. 响应式滑动菜单_如何创建响应式滑动菜单

    响应式滑动菜单 by Prashant Yadav 通过Prashant Yadav 如何创建响应式滑动菜单 (How to create a responsive sliding menu) I r ...

  8. ECMAScript 6规范总结(长文慎入)

    闲话 学习ES6的动机起于对其promise标准的好奇,它与jQuery源码中Deferred不同,而且在异步编程中加入了Generator,在后续ES7中更有Async.这勾起我强烈的兴趣了解ES6 ...

  9. 三中好用的数组去重方式

    var a = [5,6,5,4,'3',{},3,'字符'] 方法一:建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 function unique0 ...

  10. js数组去重方法分析与总结

    数组去重经常被人拿来说事,虽然在工作中不常用,但他能够很好的考察js基础知识掌握的深度和广度,下面从js的不同阶段总结一下去重的方法. ES3阶段 该阶段主要通过循环遍历数组从而达到去重的目的 多次循 ...

最新文章

  1. POJ 2976 Dropping tests【二分 最大化平均值】
  2. Linux查看端口使用状态及启动
  3. docker 的资源控制和数据管理
  4. 通俗理解Paxos算法
  5. Linux开机启动过程(3):显示模式初始化和进入保护模式
  6. 读程序员网游专题云风的文章有感
  7. nginx-upload-module模块实现文件断点续传
  8. 高校计算机教研室工作计划,2017高校教研室工作计划
  9. 平衡二叉树(C++实现)
  10. 图解|什么是蒙提霍尔问题(三门问题)
  11. 模拟电路实验 02 - | 阻容耦合放大电路
  12. フローのパラメータについて
  13. Redis基于Set如何实现用户关注模型?
  14. 如何给电脑系统重置系统?方法其实很简单
  15. 计算机类sci四大水刊,医学sci中的四大水刊,你知道吗
  16. 【路径规划-TSP问题】基于蚁群算法求解实际地图旅行商问题含Matlab源码
  17. 关于相机飞拍和IO板卡触发拍照
  18. FFmpeg 添加 提取mkv视频字幕
  19. 高速信号采集卡,250MSPS,最高支持128通道高速同步采集记录存储!
  20. css实现点击内容切换div

热门文章

  1. linux反序列化漏洞,Apache Camel Java对象反序列化漏洞(CVE-2015-5348)
  2. java的oracle事务回滚_Oracle事务处理
  3. 指标公式c语言源码下载,自用60分钟指标源码
  4. python实战经典例子_Python入门经典实例
  5. JavaScript 4行代码找出重复出现次数最多的元素及次数
  6. Javascript ES6 Promise异步链式读取文件解决回调地狱
  7. cmd怎么使用post请求’_flutter中dio的post请求方式使用总结
  8. idea导入项目无法解析java
  9. android SDK安装以及环境变量配置
  10. 【转】VB代码VB小程序:宇宙大爆炸演示