ES6:Set数据结构
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数据结构相关推荐
- ES6 Map数据结构
Map JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. ES6 提供了 Map 数据结构.它类似于对 ...
- 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 ...
- 读阮一峰ES6—Set数据结构
文章目录 ES6-Set的数据结构 ES6-Set的数据结构 1. 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,不会添加重复的值. const s = new ...
- ES6 WeakSet数据结构 与Set十分相似
它与Set十分相似,对象的值也不能是重复的,与Set不同点: 1.WeakSet成员只能够是对象. 2.作为WeakSet成员的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是 ...
- 前端笔试题面试题记录(上)
前言 过完元宵,就到上海找了波工作,现在已经入职好了,蹭波热点,写一波面试记录,内容包含笔试题和面试题,还有一些没有写进来,准备再开一篇,许久没写了,写的确实有些慢.如果喜欢的话可以点波赞,或者关注一 ...
- web前端数组处理之数组去重
在web前端开发过程中避免会遇到很多数组需要处理,经常出现的问题就是数组去重,今天小千就来给大家介绍一下几种常见的数组去重的方式,大家可以学习一下以备不时之需. 数组去重概念:去除数组中重复重新的值 ...
- 响应式滑动菜单_如何创建响应式滑动菜单
响应式滑动菜单 by Prashant Yadav 通过Prashant Yadav 如何创建响应式滑动菜单 (How to create a responsive sliding menu) I r ...
- ECMAScript 6规范总结(长文慎入)
闲话 学习ES6的动机起于对其promise标准的好奇,它与jQuery源码中Deferred不同,而且在异步编程中加入了Generator,在后续ES7中更有Async.这勾起我强烈的兴趣了解ES6 ...
- 三中好用的数组去重方式
var a = [5,6,5,4,'3',{},3,'字符'] 方法一:建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 function unique0 ...
- js数组去重方法分析与总结
数组去重经常被人拿来说事,虽然在工作中不常用,但他能够很好的考察js基础知识掌握的深度和广度,下面从js的不同阶段总结一下去重的方法. ES3阶段 该阶段主要通过循环遍历数组从而达到去重的目的 多次循 ...
最新文章
- POJ 2976 Dropping tests【二分 最大化平均值】
- Linux查看端口使用状态及启动
- docker 的资源控制和数据管理
- 通俗理解Paxos算法
- Linux开机启动过程(3):显示模式初始化和进入保护模式
- 读程序员网游专题云风的文章有感
- nginx-upload-module模块实现文件断点续传
- 高校计算机教研室工作计划,2017高校教研室工作计划
- 平衡二叉树(C++实现)
- 图解|什么是蒙提霍尔问题(三门问题)
- 模拟电路实验 02 - | 阻容耦合放大电路
- フローのパラメータについて
- Redis基于Set如何实现用户关注模型?
- 如何给电脑系统重置系统?方法其实很简单
- 计算机类sci四大水刊,医学sci中的四大水刊,你知道吗
- 【路径规划-TSP问题】基于蚁群算法求解实际地图旅行商问题含Matlab源码
- 关于相机飞拍和IO板卡触发拍照
- FFmpeg 添加 提取mkv视频字幕
- 高速信号采集卡,250MSPS,最高支持128通道高速同步采集记录存储!
- css实现点击内容切换div
热门文章
- linux反序列化漏洞,Apache Camel Java对象反序列化漏洞(CVE-2015-5348)
- java的oracle事务回滚_Oracle事务处理
- 指标公式c语言源码下载,自用60分钟指标源码
- python实战经典例子_Python入门经典实例
- JavaScript 4行代码找出重复出现次数最多的元素及次数
- Javascript ES6 Promise异步链式读取文件解决回调地狱
- cmd怎么使用post请求’_flutter中dio的post请求方式使用总结
- idea导入项目无法解析java
- android SDK安装以及环境变量配置
- 【转】VB代码VB小程序:宇宙大爆炸演示