返回

JS 数据结构(三)--字典和散列表

前端

字典(Dictionary)又称散列表(Hash Table),是一种数据结构,用于存储键值对。键(Key)是唯一的标识符,而值(Value)是与键相关联的数据。字典的典型实现使用哈希函数将键映射到值。哈希函数将键转换为散列值(Hash Value),该散列值用于确定值在字典中的存储位置。

JavaScript 中的字典通常使用对象(Object)来实现。对象是一种无序的键值对集合。键可以是字符串、数字或符号,而值可以是任何类型的数据。对象可以使用点运算符(.)或方括号([])来访问键值。

const myDict = {
  name: 'John Doe',
  age: 30,
  city: 'New York'
};

console.log(myDict.name); // 'John Doe'
console.log(myDict['age']); // 30

字典的方法

字典提供了许多方法来管理键值对。这些方法包括:

  • set(key, value):向字典中添加新元素。如果 key 已经存在,那么已存在的 value 会被新的值覆盖。
  • remove(key):通过使用键值作为参数来从字典中移除键值对应的数据值。
  • get(key):通过以键值作为参数查找特定的数值并返回。
  • clear():删除字典中的所有元素。

散列表

散列表是字典的另一种实现方式。它使用哈希函数来提高查找效率。哈希函数将键转换为散列值,该散列值用于确定值在字典中的存储位置。散列表通常比字典更有效率,因为它们可以更快地查找值。

JavaScript 中的散列表可以使用 Map 对象来实现。Map 对象是一个键值对集合,它使用哈希函数将键映射到值。Map 对象可以使用 set(), get(), remove()clear() 方法来管理键值对。

const myMap = new Map();

myMap.set('name', 'John Doe');
myMap.set('age', 30);
myMap.set('city', 'New York');

console.log(myMap.get('name')); // 'John Doe'
console.log(myMap.get('age')); // 30

字典和散列表的比较

字典和散列表都是用于存储键值对的数据结构。但是,它们之间存在一些关键的区别:

  • 字典使用对象来实现,而散列表使用哈希函数来实现。
  • 字典的键可以是字符串、数字或符号,而散列表的键只能是字符串。
  • 字典的查找时间复杂度为 O(1),而散列表的查找时间复杂度为 O(log n)。
  • 字典更易于使用,而散列表更有效率。

结论

字典和散列表都是 JavaScript 中常用的数据结构。字典更易于使用,而散列表更有效率。在选择使用哪种数据结构时,需要考虑具体的需求。如果需要快速查找数据,那么可以使用散列表。如果需要存储大量数据,那么可以使用字典。