IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> ES6语法--新的数据结构Set/WeakSet那些事 -> 正文阅读

[数据结构与算法]ES6语法--新的数据结构Set/WeakSet那些事

Set/WeakSet

新的数据结构Set

代码的形式体现。

声明方式

常用方法

应用场景

WeakSet

/**
 * 新的数据结构 Set 无序,不可重复
 * 常用方法
 * 遍历方式
 * 应用场景
 * WeakSet
 * @Author: 毛毛 
 * @Date: 2021-09-11 21:01:52 
 * @Last Modified by: 毛毛
 * @Last Modified time: 2021-09-11 21:40:06
 */

// 定义一个Set
// const s1 = new Set();

// 定义一个Set,参数是可迭代对象
const s2 = new Set([1, 2, 2, 3]);
console.log(s2);//?
// 添加一个数据
s2.add(4);// s2 = //?
s2.add(5).add(6);
console.log(s2);

// 删除一个数据
s2.delete(2);// 返回值是是否删除成功
console.log(s2.delete(1), s2); //

// 集合set是否包含某个元素 has
console.log(s2.has(3), s2.has(7));

// 集合set的元素个数 size是属性 不是方法!
console.log(s2.size);

// 清空Set
s2.clear();
console.log(s2);


s2.add(1).add(2).add(3).add(4);//?

// 集合的遍历方式
s2.forEach(val => {
  console.log(val)// 1 2 3 4
})

// Set结构 有key 也有value 但是没有下标的概念
// 但是 key和value相同
// console.log(s2.keys(),s2.values());
for (const val of s2) {
  console.log(val);
}
for (const k of s2.keys()) {
  console.log(k);
}
for (const v of s2.values()) {
  console.log(v);
}
for (const entry of s2.entries()) {
  console.log(entry[0], entry[1], entry);
}

// 应用场景 
// 1. 数组去重
const s3 = new Set([1, 2, 3, 3, 2, 1]);
console.log(s3, s3.size);

// 数组合并,且去重
const s4 = new Set([...[1, 2, 3], ...[1, 2, 3, 4]]);
console.log(s4, s4.size, [...s4]);
// 使用Array.from() 转集合为数组
console.log(Array.from(s4));

// 求两个数组的交集
const a1 = [1, 2, 3, 3, , 4];
const a2 = [2, 3, 5];
const s5 = new Set(a1);
const s6 = new Set(a2);
const res = new Set(a1.filter(val => s6.has(val)));
console.log([...res]);// [2,3]

// 求两个数组的差集
const res2 = new Set(a1.filter(val => !s6.has(val)));
const res3 = new Set(a2.filter(val => !s5.has(val)));
console.log([...res2, ...res3]);// [1, 4, 5]


// TODO WeakSet 数据结构 只能存储对象
const ws1 = new WeakSet();//?

let obj1 = { name: "战三" };
const obj2 = { name: "lisi" };
ws1.add(obj1).add(obj2);//?
console.log(ws1.has(obj1));

// WeakSet 不可以遍历 存储的元素也只是弱引用
// ws1.forEach()

// 存储的元素也只是弱引用
// 弱引用 就是说垃圾回收机制不会考虑我们WeakSet里面引用了这个对象
// 只要原对象的引用断了,这个WeakSet里面记录的该元素也会自动消失

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:24:22  更:2021-09-12 13:25:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:47:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码