-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
1. 什么是 Map
Map
是一种存储键值对的数据集合类型,每一对键值对都能从唯一的键映射到对应的值,所以 Map
中不存在重复的键值对。
1.1 new Map()
Map
通过调用构造函数的方式来创建一个 Map
实例,以下代码创建了一个空 Map
实例,使用 set
方法关联键值对,使用 get
方法获取键对应的值。
const m = new Map()
m.set('key1', 'value1')
m.get('key1') // value1
该构造函数接受一个 [[key, value], ...]
形式的二维数组或者其他可迭代对象作为参数。
const m = new Map([
[1, 'value1'], [2, 'value2'], [3, 'value3']
])
m.get(1) // value1
m.get(2) // value2
m.get(3) // value3
1.2 迭代 Map
可以使用 for..of
以及 forEach
来迭代 Map
实例
for (let [key, value] of map) { ... }
map.forEach((value, key) => { ... }
可以使用 typeof <obj>[Symbol.iterator] === 'function'
来判断是否为可迭代对象
1.3 Map 的键
Map
的键可以是任意的数据类型,在使用 set
方法取值的时候 Map
根据 ===
的运算结果来判断应该取哪个值。但是有一个特例是 NaN
,虽然 NaN !== NaN
,但是对于 Map
来说,NaN
与其自身相等。