学习JavaScript数据结构与算法 — 字典

定义

通俗地说,字典就是键值对[键,值],是键到值的映射关系。javascript

方法

  • set(key,value):向字典中添加新元素。java

  • remove(key):经过使用键值来从字典中移除键值对应的数据值。数组

  • has(key):若是某个键值存在于这个字典中,则返回true,反之则返回false。this

  • get(key):经过键值查找特定的数值并返回。code

  • clear():将这个字典中的全部元素所有删除。ip

  • size():返回字典所包含元素的数量。与数组的length属性相似。原型链

  • keys():将字典所包含的全部键名以数组形式返回。rem

  • values():将字典所包含的全部数值以数组形式返回。get

实现

function Dictionary() {
    // items做为私有变量,是字典的载体
    var items = {};
    // has方法,若是某个键值存在于这个字典中,则返回true,反之则返回false
    this.has = function (key) {
        return key in items;
    };
    // set方法,向字典中添加新元素
    this.set = function (key, value) {
        items[key] = value;
    };
    // remove方法,经过使用键值来从字典中移除键值对应的数据值
    this.remove = function(key) {
        if (this.has(key)) {
            delete items[key];
            return true;
        }
        return false;
    };
    // get方法,经过键值查找特定的数值并返回
    this.get = function(key) {
        return this.has(key) ? items[key] : undefined;
    };
    // clear方法,将这个字典中的全部元素所有删除
    this.clear = function(){
        // 清空字典列表
        items = {};
    };
    // size方法,返回字典所包含元素的数量。与数组的length属性相似
    this.size = function(){
        // Object.keys不会遍历原型链上的属性
        return Object.keys(items).length;
    };
    // keys方法,将字典所包含的全部键名以数组形式返回
    this.size = function(){
        return Object.keys(items);
    };
    // values方法,将字典所包含的全部数值以数组形式返回
    this.values = function() {
        var values = {};
        for (var k in items) {
            // 用has方法判断,避免遍历到原型链上的属性
            if (this.has(k)) {
                values.push(items[k]);
            }
        }
        return values;
    };
}
相关文章
相关标签/搜索