5-字典(哈希)

举报
林太白 发表于 2025/11/06 17:57:47 2025/11/06
【摘要】 5-字典(哈希)

5-字典(哈希)

字典也是一种存储唯一值的数据结构,但它以键值对的形式存储。ES6中的字典名为Map

字典(或称哈希表)通常通过 对象(Object)**Map** 类型来实现,它们用于存储键值对(key-value pairs)。字典的核心特性是 通过键(key)快速访问值(value),通常使用 哈希算法 来实现键到值的映射。

JS实现

Map 中的键和值可以是任何类型(包括对象、函数等)

 // 字典
const map = new Map()

// 增
map.set('key1', 'value1')
map.set('key2', 'value2')
map.set('key3', 'value3')

// 删
map.delete('key3')
// map.clear()

// 改
map.set('key2', 'value222')

// 查
map.get('key2')

使用场景

  • 场景:leetcode刷题

LeetCode题目

349 两个数组的交集
● 20 有效括号
● 1 两数之和
● 3 无重复字符的最长子串
● 76 最小覆盖子串

对象 vs Map:区别

尽管对象和 Map 都可以用来实现字典,二者在使用上有一些重要的区别:

特性 对象 (Object) Map
键的类型 只能是字符串或符号(Symbol) 可以是任何类型(包括对象、函数等)
键值对的顺序 没有保证(ES6 后的对象会保持插入顺序) 保持插入顺序
性能 键值对较少时性能较好,随着属性增加可能变慢 在添加、删除大量键值对时性能更好
默认原型 继承自 Object.prototype
,可能包含其他属性
没有继承自 Object
,没有额外的属性
Object.keys()<br/>Object.values()`
set()
get()
has()
delete()
迭代器 不支持直接迭代(需要手动转换为数组) 直接支持迭代(forEach()
for...of
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。