5-字典(哈希)
【摘要】 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)