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

ES6 之 Set 与 Map 数据结构要点总结(一)

Set 数据结构

Set 对象允许你存储任何类型的唯一值,无论是原始值还是对象引用。

特性:

  • 所有值都是唯一的,没有重复。
  • 值的顺序是根据添加的顺序确定的。
  • 可以使用迭代器遍历 Set。

常用方法:
1. add(value):添加一个新值到 Set。
2. delete(value):从 Set 中移除一个值。
3. has(value):检查 Set 是否包含某个值。
4. clear():移除 Set 中的所有值。
5. size:返回 Set 中的元素数量。

示例:

let set = new Set();// 添加值
set.add(1);
set.add("hello");
set.add({ name: "Alice" });// 检查值是否存在
console.log(set.has(1)); // 输出:true
console.log(set.has("hello")); // 输出:true
console.log(set.has(2)); // 输出:false// 删除值
set.delete(1);
console.log(set.has(1)); // 输出:false// 遍历 Set
for (let item of set) {console.log(item);
}// 清空 Set
set.clear();
console.log(set.size); // 输出:0

Map 数据结构

Map 对象保存键值对的集合,其中键和值可以是任意类型。

特性:

  • 任何值(对象或原始值)都可以作为键或值。
  • 保持键的顺序,按照元素的插入顺序进行迭代。
  • 比对象更适合用作某些类型的键(如对象或函数)。

常用方法:

  1. set(key, value):将键和值存入 Map。
  2. get(key):根据键获取值。
  3. has(key):检查 Map 是否包含某个键。
  4. delete(key):根据键删除键值对。
  5. clear():移除 Map 中的所有键值对。
  6. size:返回 Map 中的元素数量。

示例:

let map = new Map();// 添加键值对
map.set("key1", "value1");
map.set(1, "number");
map.set({ name: "Bob" }, "object");// 通过键获取值
console.log(map.get("key1")); // 输出:value1
console.log(map.get(1)); // 输出:number// 检查键是否存在
console.log(map.has("key1")); // 输出:true
console.log(map.has(2)); // 输出:false// 删除键值对
map.delete(1);
console.log(map.has(1)); // 输出:false// 遍历 Map
for (let [key, value] of map) {console.log(`${key}: ${value}`);
}// 清空 Map
map.clear();
console.log(map.size); // 输出:0

扩展特性:

  • WeakSet 和 WeakMap:类似于 Set 和 Map,但是它们存储的键是弱引用,这意味着它们不会被垃圾回收机制考虑,如果外部没有对这些键的引用,它们会被自动回收。
    WeakSet 代码示例:
let weakSet = new WeakSet();let obj = {};
weakSet.add(obj);// 由于obj是唯一的,WeakSet不能添加重复的对象
console.log(weakSet.has(obj)); // 输出:true// 当obj没有被其他地方引用时,它会被垃圾回收
obj = null;
// weakSet中的obj也会被自动移除
console.log(weakSet.has(obj)); // 输出:false

WeakMap 代码示例:

let weakMap = new WeakMap();let keyObj = {};
weakMap.set(keyObj, "value");// 获取与键相关联的值
console.log(weakMap.get(keyObj)); // 输出:value// WeakMap中的键是弱引用,当keyObj没有被其他地方引用时,它会被垃圾回收
keyObj = null;
// weakMap中的键值对也会被自动移除
console.log(weakMap.get(keyObj)); // 输出:undefined

Set 和 Map 提供了现代的、高效的数据结构,适用于需要快速查找、添加和删除操作的场景。使用这些数据结构可以编写出更简洁、更高效的代码。

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

相关文章:

  • 一文学会用RKE部署高可用Kubernetes集群
  • 数据加密的常见方法
  • 天童美语:推荐给孩子的人文历史纪录片
  • 数字人技术如何推动教育事业可持续创新发展?
  • FPGA程序设计
  • 彻底开源,免费商用,上海AI实验室把大模型门槛打下来
  • MTEB评估基准使用指北
  • 31. 1049. 最后一块石头的重量 II, 494.目标和,474.一和零
  • PDF 中图表的解析探究
  • 递推(C语言)
  • 安卓微信8.0之后如何利用缓存找回的三天之前不可见的朋友圈图片
  • ES6 Class(类) 总结(九)
  • 使用 Vue.js 和 Element Plus 实现自动完成搜索功能
  • SpringBoot自定义starter
  • 深入探索大语言模型
  • querylist多线程采集curlMulti时,报错Curl error(60)
  • Python数据分析~~美食排行榜
  • Linux下解压.tar.gz文件
  • 【电商选品干货】差异化卖点要这样打造,80%商家却做不到
  • LabVIEW比例压力控制阀自动测试系统
  • 运营商认证API在Java、Python、PHP中的使用教程
  • 用虚拟机,可以在x86的电脑上虚拟出arm的电脑吗
  • 富格林:可信观念摆脱暗箱陷阱
  • WEB前端01-HTML5基础(01)
  • JUC-常见方法与线程的状态
  • 如果你酿的酒是黄色,说明肯定是 “糊锅”了。
  • 国漫推荐07
  • 力扣刷题35.搜索查找位置
  • setContentView 流程
  • 基于STM32设计的智能手环(ESP8266+华为云IOT)178