◆

数据结构字典详解:JavaScript Map 键值对操作

2023-02-08 12:540

什么是字典

  • 与集合类似,字典也是一种存储唯一值的数据结构,但它是以键值对的形式来存储
  • ES6 中有字典,名为 Map

字典(映射)解决的是「按键快速取值」的问题:键唯一,通过键定位对应的值,理想情况下增删查都是 O(1),不必像数组那样遍历比对。

JS 里普通对象也能当字典用,但有两个绕不开的限制:键会被隐式转成字符串,所以对象、数字、NaN 都没法作为真正的键;同时对象自带原型链,toString、constructor 这些继承来的属性会干扰判断,导致「明明没存过却查得到」。Map 把这两个问题都解决了——任意类型都能作键(按引用和 SameValueZero 比较),只存自己的键,还记录插入顺序、有 size 属性可以直接取长度。

需要频繁按键增删的场景优先选 Map;只是描述一个结构固定的数据实体,用普通对象更自然。

示例

Map 的增和改是同一个方法 set:键不存在就新增,已存在则覆盖旧值。这也是「键唯一」的体现。删除用 delete(传键,返回是否删成功),clear 一次清空全部。取值用 get,判断存在用 has。

const m = new Map();

// 增
m.set('a', 'aa');
m.set('b', 'bb');

// 删
m.delete('b');
// m.clear();

// 改
m.set('a', 'aaa');
💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVE数据结构字典详解:JavaScript Map 键值对操作加载中