这是我参与更文挑战的第20天,活动详情查看:更文挑战
什么是字典
字典是用来存储唯一值的一种数据结构,通常以[键, 值]对的形式来存储数据,也称为映射。而我们上一篇文章中提到的集合则是以[值, 值]的形式来存储元素。
es6中Map类的实现,就是我们所说的字典。
创建一个字典
- set(key, value): 向字典中添加新元素。
- remove(key): 使用键值从字典中移除键值对应的数据值。
- has(key): 如果某个键值存在于这个字典中,则返回true,否则返回false。
- get(key): 通过键值查找特定的值并返回。
- clear(): 将字典中的所有元素都移除。
- size(): 返回字典中所包含的元素的数量。与数组的length属性类似。
- keys(): 将字典中所包含的所有的键名以数组的形式返回。
- values(): 将字典中所包含的所有值以数组的形式返回。
function Dictionary () {
let items = {}
this.has = function (key) {
return key in items
}
this.set = function (key, value) {
items[key] = value
}
this.remove = function (key) {
if(this.has(key)){
delete items[key]
return true
}
return false
}
this.get = function (key) {
if(this.has(key)) {
return items[key]
}
return undefined
}
this.values = function () {
let values = []
for(let key in items) {
// 检查是否是私有属性,只返回私有属性,避免将原型链上的属性一并返回
if(this.hasOwnProperty(key)){
values.push(items[key])
}
}
return values
}
this.keys = function () {
return Object.keys(items)
}
this.clear = function () {
items = {}
}
this.size = function () {
return Object.keys(items).length
}
}
复制代码
至此,我们已经实现了一个简单的最基本的字典类,那么我们来创建一个实例进行验证:
let dictionary = new Dictionary()
dictionary.set('A', 'aaa')
dictionary.set('B', 'bbb')
dictionary.set('C', 'ccc')
console.log(dictionary.has('A')) // 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']
复制代码
上述代码中,我们可以清晰的看到输出结果,也就验证了我们的字典类。
字典,类比于我们的英汉字典,那么英汉字典本身就可以看作是一个键值对的集合体,比方说我们要查找beautiful是什么意思,自然的打开字典就可以查到beautiful是漂亮的,而此时 beautiful就是键名,漂亮的就是键值。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END