Map与Set

Map

作为 ECMAScript 6 的新增特性, Map 是一种新的集合类型,为这门语言带来了真正的键/值存储机制。 Map 的大多数特性都可以通过 Object 类型实现,但二者之间还是存在一些细微的差异。

  1. Object 只能使用数值、字符串或符号作为键不同, Map 可以使用任何 JavaScript 数据类型作为键;
  2. 与严格相等一样,在映射中用作键和值的对象及其他“集合”类型,在自己的内容或属性被修改时仍然保持不变:
  3. 与 Object 类型的一个主要差异是, Map 实例会维护键值对的插入顺序,因此可以根据插入顺序执行迭代操作。
操作方法和属性
  1. set(),delete(),get(),clear()
  2. has()
  3. keys(),values(),entries(),
  4. size,
  5. forEach()
WeekMap
  1. 弱映射中的键只能是 Object 或者继承自 Object 的类型,尝试使用非对象设置键会抛出TypeError。值的类型没有限制。
  2. 只要键存在,键/值对就会存在于映射中,并被当作对值的引用,因此就不会被当作垃圾回收。

Set

ECMAScript 6 新增的 Set 是一种新集合类型,为这门语言带来集合数据结构。 Set 在很多方面都像是加强的 Map,这是因为它们的大多数 API 和行为都是共有的。

  1. 与 Map 类似, Set 可以包含任何 JavaScript 数据类型作为值。基本上相当于使用严格对象相等的标准来检查值的匹配性。用作值的对象和其他“集合”类型在自己的内容或属性被修改时也不会改变
  2. Set 会维护值插入时的顺序,因此支持按顺序迭代。
操作方法和属性
  1. set(),delete(),get(),clear()
  2. has()
  3. keys(),values(),entries(),
  4. size,
  5. forEach()
WeekSet
  1. 弱集合中的值只能是 Object 或者继承自 Object 的类型,尝试使用非对象设置值会抛出 TypeError。
  2. WeakSet 中的“ weak”(弱) ,描述的是 JavaScript 垃圾回收程序对待“弱集合”中值的方式。

你可能感兴趣的:(Map与Set)