进修JavaScript数据结构与算法 — 字典

定义

浅显地说,字典就是键值对[键,值],是键到值的映照关联。

要领

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

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

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

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

  • clear():将这个字典中的一切元素悉数删除。

  • size():返回字典所包括元素的数目。与数组的length属性相似。

  • keys():将字典所包括的一切键名以数组情势返回。

  • values():将字典所包括的一切数值以数组情势返回。

完成

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;
    };
}
    原文作者:whale
    原文地址: https://segmentfault.com/a/1190000008552141
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞