返回

从 ES6 看Map与Set的无穷潜力

前端

从数组说起

实际上,数组也是一种集合,只是数组的索引是数值类型的,当想用非数值类型作为索引时,数组就无法满足需要了。Map集合可以保存多个键值对(key-value),Set集合可以保存多个元素。不过,对Map和Set一般不会逐一遍历其中的元素。Map通常用来存储需要频繁提取和存入的数据,而Set则更适合用来判断某个元素是否在集合中。

Map集合

Map集合和对象很像,二者都可以通过键来获取值,Map的键是任意类型,可以是字符串、数字或对象,不像数组的键只能是整数。因此,Map可以用来存储更复杂的数据,并且更灵活。

Map集合有如下方法:

  • set(key, value):向Map集合中添加一个键值对。
  • get(key):从Map集合中获取指定键对应的值。
  • has(key):检查Map集合中是否包含指定键。
  • delete(key):从Map集合中删除指定键对应的键值对。
  • clear():清空Map集合。

Set集合

Set集合与数组类似,它可以存储多个元素,但Set集合中的元素是唯一的。因此,Set集合可以用来判断某个元素是否在集合中。

Set集合有如下方法:

  • add(value):向Set集合中添加一个元素。
  • has(value):检查Set集合中是否包含指定元素。
  • delete(value):从Set集合中删除指定元素。
  • clear():清空Set集合。

实例

我们先来看一个使用Map集合的例子,我们要创建一个学生成绩Map,键是学生的姓名,值是学生的成绩。

const students = new Map();

students.set('张三', 90);
students.set('李四', 80);
students.set('王五', 70);

console.log(students.get('张三')); // 90
console.log(students.has('李四')); // true
students.delete('王五');
console.log(students.size); // 2

然后,我们再来看一个使用Set集合的例子,我们要创建一个水果Set,其中包含各种各样的水果。

const fruits = new Set();

fruits.add('苹果');
fruits.add('香蕉');
fruits.add('橘子');
fruits.add('梨');

console.log(fruits.has('苹果')); // true
fruits.delete('香蕉');
console.log(fruits.size); // 3

总结

Map和Set集合是ES6中非常强大的数据结构,它们可以用来处理各种各样的问题。通过本篇文章的学习,希望大家能够掌握Map和Set集合的使用方法,并能够在实际开发中灵活运用它们。