在 ECMAScript 6 中,JavaScript 引入了两个新的数据结构类型:Map 和 Set。这些数据结构可以用来存储一组键值对,Map 用于存储任意类型的值,而 Set 则只能存储唯一的值。这两个数据结构与传统的对象和数组相比有很多优点,本文将详细介绍这些新特性及其用法。
Map
Map 类型提供了一种新的方式来存储键值对。与基于对象存储键值对的方式不同,Map 允许我们使用任意类型作为键,而不仅是字符串或数字。Map 提供了一组方法来进行增、删、查和遍历操作,下面是一些常见的用法和示例代码:
创建 Map
我们可以通过以下方式创建一个空的 Map:
const map = new Map();
如果需要指定 Map 的初始值,可以传入一个键值对数组或其他可迭代对象:
const map = new Map([ [1, 'one'], [2, 'two'], [3, 'three'], ]);
增加键值对
向 Map 中添加键值对的方法是 set,它接受两个参数分别为键和值:
const map = new Map(); map.set('foo', 'bar'); map.set(1, 'one'); map.set({}, 'object');
删除键值对
从 Map 中删除键值对可以使用 delete 方法,它接受一个键作为参数:
const map = new Map([ [1, 'one'], [2, 'two'], ]); map.delete(1);
查找值
查找 Map 中的值可以使用 get 方法,它接受一个键作为参数:
const map = new Map([ [1, 'one'], [2, 'two'], ]); map.get(1); // 'one'
遍历 Map
Map 提供了四种遍历方式:keys、values、entries 和 forEach。它们分别返回 Map 中所有的键、值、以及键值对数组,或者是调用一个回调函数:
-- -------------------- ---- ------- ----- --- - --- ----- --- ------- --- ------- --- --- ------ --- -- ----------- - ----------------- - --- ------ ----- -- ------------- - ------------------- - --- ------ ----- ------ -- -------------- - ---------------- ------- - ------------------- ---- -- - ---------------- ------- ---
Set
Set 类型是一组无序且唯一的值的集合。它只能存储基本类型的值和引用类型的值,而不能存储对象或数组。Set 提供了一组方法来进行增加、删除、查找和遍历操作,下面是一些常见的用法和示例代码:
创建 Set
我们可以通过以下方式创建一个空的 Set:
const set = new Set();
如果需要指定 Set 的初始值,可以传入一个数组或其他可迭代对象:
const set = new Set(['a', 'b', 'c']);
增加值
向 Set 中添加值的方法是 add,它接受一个值作为参数:
const set = new Set(); set.add(1); set.add('foo'); set.add({});
删除值
从 Set 中删除值可以使用 delete 方法,它接受一个值作为参数:
const set = new Set([1, 2, 3]); set.delete(2);
查找值
查找 Set 中的值可以使用 has 方法,它接受一个值作为参数:
const set = new Set([1, 2, 3]); set.has(2); // true
遍历 Set
Set 提供了三种遍历方式:keys、values 和 entries。它们分别返回 Set 中所有的值、以及键值对数组:
-- -------------------- ---- ------- ----- --- - --- --------- ---- ------ --- ------ ----- -- ----------- - ------------------- - --- ------ ----- -- ------------- - ------------------- - --- ------ ----- ------ -- -------------- - ---------------- ------- -
总结
通过本文的介绍,我们了解了 JavaScript 中的两个新特性:Map 和 Set。它们为我们提供了存储键值对的新方式,并且具有很多优点,例如支持存储任意类型的键以及自动去重。使用 Map 和 Set 可以让我们的代码更加优雅和高效。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64512cb5675af4061b5228c6