js字典实现
JavaScript 字典实现方法
在 JavaScript 中,字典(键值对集合)可以通过多种方式实现,以下是常见的几种方法:
使用普通对象
const dictionary = {
key1: 'value1',
key2: 'value2'
};
dictionary.key3 = 'value3'; // 添加新键值
delete dictionary.key1; // 删除键值
使用 Map 对象
const map = new Map();
map.set('key1', 'value1'); // 添加键值
map.set('key2', 'value2');
map.delete('key1'); // 删除键值
console.log(map.get('key2')); // 获取值
使用 Object.create(null)

const dict = Object.create(null);
dict.key1 = 'value1';
dict.key2 = 'value2';
字典类实现
class Dictionary {
constructor() {
this.items = {};
}
set(key, value) {
this.items[key] = value;
}
delete(key) {
if(this.has(key)) {
delete this.items[key];
return true;
}
return false;
}
has(key) {
return key in this.items;
}
get(key) {
return this.has(key) ? this.items[key] : undefined;
}
clear() {
this.items = {};
}
size() {
return Object.keys(this.items).length;
}
keys() {
return Object.keys(this.items);
}
values() {
return Object.values(this.items);
}
}
各种实现方式的比较
普通对象 vs Map
- Map 保持键的插入顺序,普通对象不保证
- Map 的键可以是任意类型,对象只能是字符串或 Symbol
- Map 有 size 属性可直接获取大小
- Map 性能更好,特别在频繁增删的场景
Object.create(null) vs 普通对象

- Object.create(null) 创建的对象没有原型链,更干净
- 避免与 Object.prototype 上的属性冲突
字典操作示例
遍历字典
// Map 遍历
for(let [key, value] of map) {
console.log(key, value);
}
// 对象遍历
for(let key in dictionary) {
console.log(key, dictionary[key]);
}
检查键是否存在
// Map
map.has('key1');
// 对象
'key1' in dictionary;
获取所有键/值
// Map
[...map.keys()];
[...map.values()];
// 对象
Object.keys(dictionary);
Object.values(dictionary);
选择哪种实现方式取决于具体需求,Map 通常是现代 JavaScript 中最推荐的选择,特别是在需要复杂键类型或频繁增删操作的场景。






