数据结构之字典

这是我参与更文挑战的第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
喜欢就支持一下吧
点赞0 分享