js实现 map
实现 Map 数据结构
在 JavaScript 中,可以通过对象或类来实现 Map 数据结构。以下是几种常见的实现方式:

使用对象实现简单 Map
const map = {};
// 添加键值对
map['key1'] = 'value1';
map['key2'] = 'value2';
// 获取值
console.log(map['key1']); // 输出: value1
// 删除键值对
delete map['key1'];
使用 ES6 的 Map 类
JavaScript 原生提供了 Map 类,功能更强大:

const map = new Map();
// 添加键值对
map.set('key1', 'value1');
map.set('key2', 'value2');
// 获取值
console.log(map.get('key1')); // 输出: value1
// 检查键是否存在
console.log(map.has('key1')); // 输出: true
// 删除键值对
map.delete('key1');
// 获取大小
console.log(map.size); // 输出: 1
// 清空Map
map.clear();
自定义 Map 类实现
如果需要自定义 Map 实现,可以创建一个类:
class MyMap {
constructor() {
this.items = {};
}
set(key, value) {
this.items[key] = value;
}
get(key) {
return this.items[key];
}
has(key) {
return key in this.items;
}
delete(key) {
if (this.has(key)) {
delete this.items[key];
return true;
}
return false;
}
size() {
return Object.keys(this.items).length;
}
clear() {
this.items = {};
}
keys() {
return Object.keys(this.items);
}
values() {
return Object.values(this.items);
}
}
// 使用示例
const myMap = new MyMap();
myMap.set('a', 1);
console.log(myMap.get('a')); // 输出: 1
Map 与对象的区别
- Map 的键可以是任意类型,对象的键只能是字符串或 Symbol
- Map 保持插入顺序,对象不保证属性顺序
- Map 有 size 属性直接获取大小,对象需要手动计算
- Map 可直接迭代,对象需要先获取键数组
- Map 在频繁增删键值对时性能更好
使用场景建议
- 需要键值对存储且键可能不是字符串时,使用 Map
- 需要简单键值对且键为字符串时,可以使用对象
- 需要保证插入顺序时,使用 Map
- 需要频繁增删操作时,使用 Map






