學習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;
    };
}
相關文章
相關標籤/搜索