当前位置: 首页 > news >正文

es6:set()和weakset()

一、Map()

1.1 简介
ES6 提供了 Set 数据结构,它类似于数组,但是值是唯一没有重复的。

我们可以通过 new Set()去创建它。

1.2. Set的创建、设置与获取
    <script>
      const set = new Set();
      console.log(set.add(1)); //Set { 1 }
      const arr = [1, 2, 3, 4, 5];
      console.log(set.add(arr)); //Set { 1, [1, 2, 3, 4, 5] }
      console.log([...set]); //[1, [1, 2, 3, 4, 5]]
    </script>
1.3 Set()的一些方法
1.size 返回 Set 结构的成员总数。

2.has 方法返回一个布尔值,表示某个值是否在当前 Set 集合之中。

3.delete 删除一个值,成功返回 true,失败(即该值不在 Set 中)返回 false。

4.clear 清除 Set 集合中的所有成员。

    <script>
      // 创建一个 Set
      const mySet = new Set();
      mySet.add(1);
      mySet.add("hello");
      mySet.add({ id: 1 });
 
      // 1. 获取Set的大小(成员总数)
      console.log(mySet.size); // 输出:3
 
      // 2. 判断值是否存在
      console.log(mySet.has(1)); // 输出:true
      console.log(mySet.has("world")); // 输出:false
 
      // 3. 删除一个值
      console.log(mySet.delete("hello")); // 输出:true
      console.log(mySet.has("hello")); // 输出:false
 
      // 4. 清除所有成员
      mySet.clear();
      console.log(mySet.size); // 输出:0
    </script>
1.4 遍历Set
1.Set.prototype.keys():返回键名的遍历器

2.Set.prototype.values():返回键值的遍历器

3.Set.prototype.entries():返回键值对的遍历器

4.Set.prototype.forEach():使用回调函数遍历每个成员

    <script>
      // 创建一个 Set
      const mySet = new Set(["a", "b", "c"]);
 
      // 使用 keys() 方法遍历 Set
      for (const item of mySet.keys()) {
        console.log(item);
      } // a b c
 
      // 使用 values() 方法遍历 Set
      for (const value of mySet.values()) {
        console.log(value);
      } // a b c
 
      // 使用 entries() 方法遍历 Set
      for (const entry of mySet.entries()) {
        console.log(entry);
      } // ["a", "a"] ["b", "b"] ["c", "c"]
 
      // 使用 forEach() 方法遍历并处理 Set 中的每个成员
      mySet.forEach((item) => {
        console.log(`Processing ${item}`);
      }); // Processing a Processing b Processing c
    </script>
1.5 Set()的应用
    <script>
      //数组去重
      const mySet = new Set([1, 1, 2, 3, 4, 5, 5, 6]);
      console.log([...mySet]); // [1, 2, 3, 4, 5, 6]
      
      //字符串去重
      console.log([...new Set("ababbc")].join("")); // abc
    </script>
注意:未展开的数组无法去重,需要先扁平化

    <script>
      const arr = [
        [1, 2, 3],
        [2, 5, 6],
        [2, 8, 9],
      ];
      console.log(new Set(arr)); //Set(3) { [ 1, 2, 3 ], [ 2, 5, 6 ], [ 2, 8, 9 ] }
      console.log([...new Set(arr.flat())]); //[ 1, 2, 3, 5, 6, 8, 9 ]
    </script>

二、WeakSet 
2.1 简介
WeakSet 结构与 Set 类似,也是不重复的值的集合。它和Set主要有以下区别:

1.WeakSet 的成员只能是对象和 Symbol 值,而不能是其他类型的值。

2.WeakMap其键值对之间是弱引用关系。对于WeakMap中的键,如果除了WeakMap之外没有任何其他强引用指向该键所在的对象,则垃圾回收器可以在下一次垃圾回收周期中回收这个键所指向的对象,即使WeakMap还持有该键值对。

2.2 基本使用
    <script>
      const a = [
        [1, 2],
        [3, 4],
      ];
      const ws = new WeakSet(a);
      console.log(ws); //{1, 2}, {3, 4}
      ws.add(5);//报错
    </script>

    

http://www.lryc.cn/news/334451.html

相关文章:

  • C#仿OutLook的特色窗体设计
  • Jmeter的使用
  • 【蓝桥杯第十届省赛B】(部分详解)
  • 计算机研究生规划
  • 针孔相机、鱼眼相机、全景相机
  • HTML5+CSS3+JS小实例:圣诞按钮
  • 【深度学习基础】
  • 银行业架构网络BIAN (Banking IndustryArchitecture Network)详细介绍
  • [尚硅谷 flink] 基于时间的合流——双流联结(Join)
  • 怎样恢复已删除的照片?教你3个方法,一键恢复!
  • 植物糖基转移酶数据库-23年-地表最强系列-文献精读-6
  • 虚拟机打不开
  • MySQL数据库版本为5.5.62,时间戳超出2038年1月19日的解决方案
  • C++20 semaphore(信号量) 详解
  • 【简单讲解下Lisp的学习历程】
  • 构建高效网络:深入理解正向与反向代理的作用与配置
  • Linux:make/makefile的使用
  • Java设计模式—策略模式(商场打折)
  • FOR循环
  • C++: 命名空间/C++输入输出/缺省参数/函数重载/引用/内联函数
  • Java | Leetcode Java题解之第13题罗马数字转整数
  • 题目:学习使用register定义变量的方法。
  • IO_DAY7
  • 大模型学习笔记八:手撕AutoGPT
  • Java常用API_System——常用方法及代码演示
  • neo4j图数据库下载安装配置
  • 结构化面试-有矛盾的人际沟通题
  • AI技术创业机会之金融科技
  • LC低通滤波
  • CS162 Operating System笔记