第 7 章 Set与Map
JS
的大部分历史时期都只存在一种集合类型,也就是数组类型(尽管有人会争论说,所有非数组的对象都是键值对的集合,它们曾被用于与数组完全不同的用途)。数组在 JS
中的使用正如其他语言的数组一样,但缺少更多类型的集合导致数组也经常被当作队列与栈来使用。数组只使用了数值型的索引,而如果非数值型的索引是必要的,开发者便会使用非数组的对象。这种技巧引出了非数组对象的定制实现,即 Set
与 Map
。
Set
是不包含重复值的列表。你一般不会像对待数组那样来访问 Set
中的某个项;相反更常见的是,只在 Set
中检查某个值是否存在。Map
则是键与相对应的值的集合。因此,Map
中的每个项都存储了两块数据,通过指定所需读取的键即可检索对应的值。Map
常被用作缓存,存储数据以便此后快速检索。由于 Set
与 Map
并不正式存在于 ES5
中,开发者就只能使用非数组的对象。
ES6
向 JS
添加了 Set
与 Map
,本章将论述这两种集合类型你所需了解的全部内容。
首先,我会论述在 ES6
之前开发者为了实现 Set
与 Map
而采用的变通方法,并且这些方法为何是有问题的。在论述这些重要的背景之后,我会介绍 Set
与 Map
在 ES6
中如何工作。