map实现js
Map 实现(JavaScript)
在 JavaScript 中,Map 是一种键值对集合,允许任何类型的值(包括对象)作为键,并保留插入顺序。以下是 Map 的基本实现方法及常见操作。
创建 Map
使用 new Map() 构造函数创建一个空 Map,或通过传入一个可迭代对象(如数组)初始化 Map。
const map1 = new Map(); // 空 Map
const map2 = new Map([
['key1', 'value1'],
['key2', 'value2']
]); // 初始化 Map
添加键值对
使用 set(key, value) 方法向 Map 中添加键值对。
map1.set('name', 'Alice');
map1.set(42, 'Answer');
map1.set({ id: 1 }, 'Object Key');
获取值
通过 get(key) 方法根据键获取对应的值。若键不存在,返回 undefined。
console.log(map1.get('name')); // 输出: 'Alice'
console.log(map1.get(42)); // 输出: 'Answer'
检查键是否存在
使用 has(key) 方法检查 Map 中是否包含指定键。
console.log(map1.has('name')); // 输出: true
console.log(map1.has('unknown')); // 输出: false
删除键值对
通过 delete(key) 方法删除指定键的键值对。返回 true 表示删除成功,false 表示键不存在。
map1.delete('name'); // 返回 true
map1.delete('unknown'); // 返回 false
清空 Map
使用 clear() 方法移除所有键值对。
map1.clear(); // Map 变为空
获取 Map 大小
通过 size 属性获取 Map 中键值对的数量。
console.log(map2.size); // 输出: 2
遍历 Map
Map 支持多种遍历方式:
keys():返回键的迭代器。values():返回值的迭代器。entries():返回键值对的迭代器(默认迭代行为)。forEach(callback):遍历键值对并执行回调函数。
// 使用 for...of 遍历
for (const [key, value] of map2) {
console.log(key, value);
}
// 使用 forEach
map2.forEach((value, key) => {
console.log(key, value);
});
与 Object 的区别
- 键的类型:
Map的键可以是任意类型(包括对象),而Object的键只能是字符串或 Symbol。 - 顺序:
Map保留插入顺序,Object的键顺序不固定。 - 性能:频繁增删键值对时,
Map性能更优。 - 大小:
Map直接通过size获取,Object需手动计算。
示例代码
const userMap = new Map();
userMap.set(1, { name: 'Alice', age: 25 });
userMap.set(2, { name: 'Bob', age: 30 });
console.log(userMap.get(1)); // { name: 'Alice', age: 25 }
console.log(userMap.size); // 2
userMap.forEach((user, id) => {
console.log(`User ${id}: ${user.name}`);
});
通过 Map 可以高效管理键值对数据,尤其适合需要复杂键或频繁操作的场景。







