当前位置:首页 > JavaScript

js字典实现

2026-03-15 11:28:09JavaScript

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;

获取所有键/值

js字典实现

// Map
[...map.keys()];
[...map.values()];

// 对象
Object.keys(dictionary);
Object.values(dictionary);

选择哪种实现方式取决于具体需求,Map 通常是现代 JavaScript 中最推荐的选择,特别是在需要复杂键类型或频繁增删操作的场景。

标签: 字典js
分享给朋友:

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…