字典
WARNING
字典(Dictionary)是一种以 键-值对 形式存储数据的数据结构,键和值一一对应 字典中 key 是不能重复且无序的,而 value 可以重复 JavaScript 中的 Object 类就是以字典的形式设计的
字典和映射的关系
- 有些编程语言中称这种映射关系为字典,如 Swift 中的 Dictonary,Python 中的 dict
- 有些编程语言中称这种映射关系为 Map,比如 ES6 的 map,Java 中的 HashMap&TreeMap 等
常用操作
- set(key,value):向字典中添加新元素
- get(key):通过键值查找特定的数值并返回
- remove(key):通过使用键值来从字典中移除键值对应的数据值
- has(key):如果某个键值存在于这个字典中,则返回 true,反之则返回 false
- clear():将这个字典中的所有元素全部删除
- size():返回字典所包含元素的数量。与数组的 length 属性类似
- keys():将字典所包含的所有键名以数组形式返回
- values():将字典所包含的所有数值以数组形式返回
字典类代码实现
封装
// 创建字典的构造函数
function Dictionay() {
// 字典属性
this.items = {}
// 字典操作方法
// 1. set方法:在字典中添加键值对
Dictionay.prototype.set = function (key, value) {
this.items[key] = value
}
// 2. has方法:判断字典中是否有某个key
Dictionay.prototype.has = function (key) {
return this.items.hasOwnProperty(key)
}
// 3. get方法:根据key去获取value
Dictionay.prototype.get = function (key) {
return this.has(key) ? this.items[key] : undefined
}
// 4. remove方法:从字典中移除元素
Dictionay.prototype.remove = function (key) {
// 4.1 判断字典中是否有这个key
if (!this.has(key)) return false
// 4.2 从字典中删除key
delete this.items[key]
return true
}
// 5. keys方法:获取所有的keys
Dictionay.prototype.keys = function () {
return Object.keys(this.items)
}
// 6. values方法:获取所有的value
Dictionay.prototype.values = function () {
return Object.values(this.items)
}
// 7. size方法
Dictionay.prototype.size = function () {
return this.keys().length
}
// 8. clear方法
Dictionay.prototype.clear = function () {
this.items = {}
}
}
测试
// 创建字典对象
var dict = new Dictionay()
// 在字典中添加元素
dict.set("age", 18)
dict.set("name", "larry")
dict.set("height", 1.73)
dict.set("address", "成都市")
// 获取字典的信息
console.log(dict.keys()) // ["age", "name", "height", "address"]
console.log(dict.values()) // [18, "larry", 1.73, "成都市"]
console.log(dict.size()) // 4
console.log(dict.get("name")) // larry
// 字典的删除方法
console.log(dict.remove("height")) // true
console.log(dict.keys()) // ["age", "name", "address"]
// 清空字典
dict.clear()
console.log(dict.size()) // 0