返回

JavaScript ES(6-11)全版本语法 (九):Map

前端

  1. 简介

Map对象是ES6中新增的数据结构,它是哈希表(hash table)的实现,用于存储键值对,每个键值对由一个键(key)和一个值(value)组成。Map对象与对象(object)类似,但是它具有以下特点:

  • Map对象允许键为任意类型,而不像对象只能用字符串作为键。
  • Map对象可以对键进行排序,而对象不能。
  • Map对象有内置的遍历方法,而对象没有。

2. 创建Map对象

创建Map对象的方法有两种:

const map = new Map();
const map = new Map([
  ['key1', 'value1'],
  ['key2', 'value2'],
  ['key3', 'value3'],
]);

3. Map对象的方法

Map对象具有以下方法:

  • set(key, value):向Map对象中添加一个键值对。
  • get(key):从Map对象中获取一个键所对应的值。
  • has(key):检查Map对象中是否存在一个键。
  • delete(key):从Map对象中删除一个键值对。
  • clear():清空Map对象中的所有键值对。
  • size:返回Map对象中键值对的数量。
  • keys():返回Map对象中所有键的迭代器。
  • values():返回Map对象中所有值的迭代器。
  • entries():返回Map对象中所有键值对的迭代器。

4. WeakMap对象

WeakMap对象是ES6中新增的另一种数据结构,它与Map对象类似,但是它只能存储对象,不能存储原始值。WeakMap对象主要用于存储DOM元素和监听器之间的关系,因为它不会阻止DOM元素被垃圾回收。

5. 创建WeakMap对象

创建WeakMap对象的方法与创建Map对象的方法相同:

const weakMap = new WeakMap();
const weakMap = new WeakMap([
  [document.getElementById('element1'), 'value1'],
  [document.getElementById('element2'), 'value2'],
  [document.getElementById('element3'), 'value3'],
]);

6. WeakMap对象的方法

WeakMap对象具有以下方法:

  • set(key, value):向WeakMap对象中添加一个键值对。
  • get(key):从WeakMap对象中获取一个键所对应的值。
  • has(key):检查WeakMap对象中是否存在一个键。
  • delete(key):从WeakMap对象中删除一个键值对。

7. 遍历Map和WeakMap对象

可以使用for...of循环遍历Map和WeakMap对象:

const map = new Map([
  ['key1', 'value1'],
  ['key2', 'value2'],
  ['key3', 'value3'],
]);

for (const [key, value] of map) {
  console.log(key, value);
}

输出:

key1 value1
key2 value2
key3 value3

8. 结论

Map和WeakMap对象是ES6中新增的两种数据结构,它们具有许多强大的特性。Map对象允许键为任意类型,并且可以对键进行排序,WeakMap对象可以存储对象,并且不会阻止DOM元素被垃圾回收。Map和WeakMap对象在实际开发中都有着广泛的应用。