Skip to content

JavaScript Map vs. Object #2

@afishhhhh

Description

@afishhhhh

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 与其自身相等

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions