Skip to content

字典结构

字典,英语为 Dictionary,这是一种存储一组 键值对 的数据结构。在字典中,每个键(key)都是 唯一 的,并且与一个值(value)关联。你可以通过键来访问对应的值,这使得字典特别适用于需要快速查找和插入操作的场景。

字典的基本特征

  1. 键唯一性
  2. 键值对
  3. 无序性
  4. 快速查找

字典常见方法

在不同的编程语言中,字典的叫法会有一点区别,有的称之为映射(Map)、哈希表(HashMap) 或者关联数组。

代码实现

class MyDictionary {
constructor() {
this.items = {}
}
// 向字典中添加新的元素
set(key, value) {
this.items[key] = value
}
// 判断字典中是否存在某个键
hasKey(key) {
return Object.prototype.hasOwnProperty.call(this.items, key)
}
// 根据 key 来获取数据
get(key) {
return this.hasKey(key) ? this.items[key] : undefined
}
// 一些辅助方法
clear() {
this.items = {}
}
size() {
return this.keys().length
}
isEmpty() {
return this.size() === 0
}
keys() {
return Object.keys(this.items)
}
values() {
return Object.values(this.items)
}
keyValues() {
return Object.entries(this.items)
}
forEach(fn) {
for (let key in this.items) {
fn(key, this.items[key])
}
}
}

从 ES6 开始,官方就在语言中内置了字典结构(map)

const m = new Map()
m.set('name', 'Tom')
m.set('age', 30)
m.set('city', 'New York')
console.log(m)
m.delete('city')
console.log(m)
console.log(m.size)
m.set('name', '张三')
console.log(m)
console.log(m.get('name'))
console.log(m.keys())
console.log(m.values())
console.log(m.entries())
m.forEach((value, key) => {
console.log(key, value)
})

字典常见操作

  1. 合并字典:将两个字典合并成一个字典

    const m1 = new Map([
    ['a', 1],
    ['b', 2],
    ])
    const m2 = new Map([
    ['c', 10],
    ['b', 20],
    ])
    const m3 = new Map([...m1, ...m2])
    console.log(m3)
  2. 过滤字典:根据某些条件来筛选出某些键值对

const m1 = new Map([
['a', 1],
['b', 2],
['c', 3],
['d', 4],
])
const m2 = new Map([...m1].filter(([key, value]) => value >= 3))
console.log(m2)
  1. 转换字典键值
const m1 = new Map([
['a', 1],
['b', 2],
['c', 3],
['d', 4],
])
const m2 = new Map([...m1].map(([key, value]) => [key, value * 2]))
console.log(m2)

-EOF-