字典
字典是用来存储唯一值的一种数据结构,通常以[键, 值]对的形式来存储数据,也称为映射。es6 中 Map 类的实现,就是我们所说的字典。
字典的存储结构也是通过哈希表来实现的,所以两者存入数据的方式是一样的,但是两者在执行效率上还是有差别的。
是什么
class Dictionary{
constructor(){
this.items = {}
}
// 查:
has(key){
// return !!this.items[key]
return key in this.items
}
// 查:
size(){
return Object.values(this.items).length
}
get(key){
if(this.has(key)){
return this.items[key]
}
return undefined
}
keys(){
return Object.keys(this.items)
}
values(){
return Object.values(this.items)
}
// 增
set(key,value){
this.items[key] = value
}
// 删
remove(key){
if(this.has(key)){
delete this.items[key]
return true
}
return false
}
}
使用方法:
let dictionary = new Dictionary()
dictionary.set('A', 'aaa')
dictionary.set('B', 'bbb')
dictionary.set('C', 'ccc')
dictionary.remove('A')
console.log(dictionary.has('B')) // true
console.log(dictionary.size()) // 3
console.log(dictionary.get('B')) // 'bbb'
console.log(dictionary.keys()) // ['A', 'B', 'C']
console.log(dictionary.values()) // ['aaa', 'bbb', 'ccc']
怎么做
解决了什么问题
与哈希表区别
和哈希表相似之处: Dictionary 里面的每一个元素都是一个键值对(由二个元素组成:键和值) 键必须是唯一的,而值不需要唯一的.
和哈希表的不同之处: 键和值的类型取决于定义字典时的设置类型。 通过一个键读取一个值的时间是接近 O(1) 键值对之间的偏序可以不定义