ES6 从入门到精通 # 10:Set 集合数据类型

简介: ES6 从入门到精通 # 10:Set 集合数据类型

说明

ES6 从入门到精通系列(全23讲)学习笔记。



Set 集合

集合:表示无重复值的有序列表

let kaimo = new Set();
console.log(kaimo)


0502741e9ec0402486a2545b79edaccb.png


添加元素

let kaimo = new Set();
kaimo.add(3);
kaimo.add("1");
kaimo.add(3); 
kaimo.add([3, 1, 3])
console.log(kaimo)


34003cee0a2b44b48cb02970b2c4c85d.png


删除元素

kaimo.delete([3, 1, 3]);
console.log(kaimo)
kaimo.delete(3);
console.log(kaimo)


7d9a26db01984921a245ccd21771ac4e.png


校验某个值是否在 set 中

kaimo.has('1')


a305d3e4cbe74da0a5c8f4063c02eff7.png



访问集合的长度

kaimo.size



40a2f77213ff4372a115108df66ba49e.png



注意:forEach 的用法,这里的 val 是相等于 key 的

kaimo.forEach((val, key) => {
  console.log("val--->", val)
  console.log("key--->", key)
})


3b45f174869c4904918f000a9e981f7e.png


用扩展运算符将集合转为数组

let kaimo = new Set([3, 1, 3]);
console.log(kaimo )
let arr = [...kaimo];
console.log(arr)


76754d42b8324452b0617f21ec3475c6.png



拓展


set 中对象的引用无法被释放

let kaimo = new Set(), obj = {name: "kaimo313"};
kaimo.add(obj)
// 释放当前的资源
obj = null
console.log(kaimo);


80272a32608a42ff8841ff98910eccac.png


解决方法:使用 WeakSet

let kaimo1 = new Set(), obj1 = {name1: "kaimo313"};
kaimo1.add(obj1)
// 释放当前的资源
obj1 = null
let kaimo2 = new WeakSet(), obj2 = {name2: "kaimo313"};
kaimo2.add(obj2)
// 释放当前的资源
obj2 = null
kaimo1
kaimo2


c00a5105821140ef9800dbb1028d3e30.png


WeakSet 的特点

  1. 不能传入非对象类型的参数


2ce67f7e524e425e8bccb592401226de.png


2.不可迭代

7f6eff07c8dc4817b6c894c2d3e9ac63.png


  1. 没有 forEach()
  2. 没有 size 属性




目录
相关文章
|
1月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
1天前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
30天前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
1月前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
1月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
1月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
19 0
|
9天前
|
存储 Java API
【数据结构】map&set详解
本文详细介绍了Java集合框架中的Set系列和Map系列集合。Set系列包括HashSet(哈希表实现,无序且元素唯一)、LinkedHashSet(保持插入顺序的HashSet)、TreeSet(红黑树实现,自动排序)。Map系列为双列集合,键值一一对应,键不可重复,值可重复。文章还介绍了HashMap、LinkedHashMap、TreeMap的具体实现与应用场景,并提供了面试题示例,如随机链表复制、宝石与石头、前K个高频单词等问题的解决方案。
21 6
【数据结构】map&set详解
|
2天前
|
存储 JavaScript 前端开发
js的map和set |21
js的map和set |21
|
1月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
1月前
|
存储 JavaScript 前端开发
ES6新特性(四): Set 和 Map
ES6新特性(四): Set 和 Map