Map和Set是ES6新增的集合类型,Map支持任意键类型并保持插入顺序,适合存储键值对;Set自动去重,用于唯一值集合;WeakMap和WeakSet以弱引用避免内存泄漏,适用于对象私有数据管理。

在JavaScript ES6中,Map和Set是两种新增的集合类型,它们弥补了传统对象和数组在处理键值对和唯一值集合时的不足。相比普通对象,它们更灵活、语义更清晰,尤其适合管理动态数据结构。
Map:键值对的有序集合
Map允许你使用任意类型的值作为键或值,并保持插入顺序。与普通对象只支持字符串或Symbol作为键不同,Map可以使用对象、函数甚至NaN作为键。
常用方法包括:
set(key, value):添加或更新键值对 get(key):获取对应值 has(key):判断是否存在该键 delete(key):删除指定键值对 clear():清空所有内容 size:返回键值对数量
示例:
立即学习“Java免费学习笔记(深入)”;
const map = new Map();map.set('name', 'Alice');map.set({id: 1}, [1, 2, 3]);map.get('name'); // 'Alice'map.has({id: 1}); // false(引用不同)
遍历Map:
for (const [key, value] of map) { console.log(key, value);}// 或使用 forEachmap.forEach((value, key) => { console.log(key, value);});
Set:唯一值的集合
Set用于存储唯一值,自动去重。任何类型都可以存入Set,重复的值将被忽略。
常用方法包括:
add(value):添加值 has(value):检查是否存在 delete(value):删除值 clear():清空集合 size:返回元素个数
示例:
立即学习“Java免费学习笔记(深入)”;
const set = new Set([1, 2, 2, 3, 4, 4]);console.log(set); // Set {1, 2, 3, 4}set.add('hello');set.has(1); // true
Set常用于数组去重:
const arr = [1, 2, 2, 3, 4, 4];const uniqueArr = [...new Set(arr)]; // [1, 2, 3, 4]
WeakMap 与 WeakSet:弱引用集合
这两个变体仅接受对象作为键(WeakMap)或值(WeakSet),并且是“弱引用”,不会阻止垃圾回收。适合用于私有数据或对象元信息管理,避免内存泄漏。
特点:
不阻止垃圾回收 不可迭代 没有size属性或clear()方法
WeakMap 示例:
const wm = new WeakMap();const obj = {};wm.set(obj, 'private data');wm.get(obj); // 'private data'obj = null; // 对象可被回收
基本上就这些。Map和Set让JavaScript的数据操作更强大,特别是在需要唯一性或非字符串键的场景下非常实用。合理使用Weak版本还能优化内存表现。
以上就是JavaScript中的Map与Set数据结构使用_js ES6+的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1534720.html
微信扫一扫
支付宝扫一扫