Set和Map各是什么?

SetMap 是 JavaScript 中提供的两种集合类型的数据结构,它们提供了比传统的数组和对象更丰富的操作方式,适用于不同的使用场景。

Set

Set 是一种新的数据结构,它类似于数组,但其成员是唯一的,即没有重复值。Set 可以用来存储任何类型的唯一值,无论是原始值还是对象引用。

主要特性:
  • 唯一性:每个值在 Set 中只能出现一次。即使你多次添加相同的值,也只会保留一个副本。
  • 无序性Set 中的元素是没有顺序的。
  • 迭代:可以使用 for...of 循环或 forEach 方法遍历 Set 中的所有元素。
常用方法:
  • add(value):添加一个新的元素到 Set 中。
  • delete(value):从 Set 中删除指定元素。
  • has(value):检查 Set 中是否包含某个值。
  • clear():清除所有元素。
  • size:返回 Set 中元素的数量。
let mySet = new Set([1, 2, 3, 4]);
mySet.add(5);
console.log(mySet); // 输出 Set { 1, 2, 3, 4, 5 }
mySet.add(1); // 尝试添加重复值
console.log(mySet); // 输出 Set { 1, 2, 3, 4, 5 },未改变
console.log(mySet.has(1)); // 输出 true

Map

Map 是一种键值对的集合,其中键和值都可以是任意类型。与普通的对象(Object)相比,Map 的键可以是任何数据类型,而不仅仅是字符串。

主要特性:
  • 键的多样性Map 的键可以是任何类型,包括函数、对象以及基本数据类型。
  • 有序性Map 维持插入顺序,这意味着你可以按照元素被插入的顺序进行迭代。
  • 迭代:可以通过 for...of 或者 forEach 来遍历 Map 的键值对。
常用方法:
  • set(key, value):设置 Map 中的键值对。
  • get(key):获取对应键的值。
  • delete(key):删除对应的键值对。
  • has(key):判断 Map 中是否存在指定键。
  • clear():清除所有的键值对。
  • size:返回 Map 中键值对的数量。
let myMap = new Map();
myMap.set('name', 'John');
myMap.set(1, 'number one');
console.log(myMap.get('name')); // 输出 John
console.log(myMap.size); // 输出 2
console.log(myMap.has(1)); // 输出 true

总结

  • Set 适合用于需要保证元素唯一性的场景,比如去重操作。
  • Map 则更适合于需要存储键值对,并且键不局限于字符串的情况,提供了一种更加灵活的数据存储方案。

两者都提供了强大的功能来处理复杂的数据集合,并且由于它们支持迭代器协议,因此很容易与现代JavaScript的新特性(如解构赋值、扩展运算符等)结合使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值