本文共 3128 字,大约阅读时间需要 10 分钟。
如需转载, 请咨询作者, 并且注明出处.
有任何问题, 可以关注我的微博: , 或者添加我的微信: 372623326
数组-集合-字典是几乎编程语言都会默认提供的数据类型.
在JavaScript中默认提供了数组, 但没有提供集合和字典(ES6中增加了), 在上一章节中, 我们自己通过对象实现了一下集合.
本章, 我们还是基于对象实现一下字典.
字典的介绍
创建字典类
我们向之前封装集合一样, 封装一个字典的构造函数
// 创建字典的构造函数function Dictionay() { // 字典属性 this.items = {} // 字典操作方法}
代码解析:
我们之前封装的数据结构, 都有封装各种操作, 字典也是一样
常见的操作
set(key,value)
:向字典中添加新元素。remove(key)
:通过使用键值来从字典中移除键值对应的数据值。has(key)
:如果某个键值存在于这个字典中,则返回true
,反之则返回false
。get(key)
:通过键值查找特定的数值并返回。clear()
:将这个字典中的所有元素全部删除。size()
:返回字典所包含元素的数量。与数组的length
属性类似。keys()
:将字典所包含的所有键名以数组形式返回。values()
:将字典所包含的所有数值以数组形式返回。操作的实现
我们将这些方法放在一起实现
// 创建字典的构造函数function Dictionay() { // 字典属性 this.items = {} // 字典操作方法 // 在字典中添加键值对 Dictionay.prototype.set = function (key, value) { this.items[key] = value } // 判断字典中是否有某个key Dictionay.prototype.has = function (key) { return this.items.hasOwnProperty(key) } // 从字典中移除元素 Dictionay.prototype.remove = function (key) { // 1.判断字典中是否有这个key if (!this.has(key)) return false // 2.从字典中删除key delete this.items[key] return true } // 根据key去获取value Dictionay.prototype.get = function (key) { return this.has(key) ? this.items[key] : undefined } // 获取所有的keys Dictionay.prototype.keys = function () { return Object.keys(this.items) } // 获取所有的value Dictionay.prototype.values = function () { return Object.values(this.items) } // size方法 Dictionay.prototype.size = function () { return this.keys().length } // clear方法 Dictionay.prototype.clear = function () { this.items = {} }}
代码解析:
字典的使用
我们来使用和测试一下字典类:
// 创建字典对象var dict = new Dictionay()// 在字典中添加元素dict.set("age", 18)dict.set("name", "Coderwhy")dict.set("height", 1.88)dict.set("address", "广州市")// 获取字典的信息alert(dict.keys()) // age,name,height,addressalert(dict.values()) // 18,Coderwhy,1.88,广州市alert(dict.size()) // 4alert(dict.get("name")) // Coderwhy// 字典的删除方法dict.remove("height")alert(dict.keys())// age,name,address// 清空字典dict.clear()