zoukankan      html  css  js  c++  java
  • 用js来实现那些数据结构11(字典)

      我们这篇文章来说说Map这种数据结构如何用js来实现,其实它和集合(Set)极为类似,只不过Map是【键,值】的形式存储元素,通过键来查询值,Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以是任何引用类型的数据,但key不能重复,而集合以【值,值】的形式存储元素。字典也可以叫做映射。在ES6中同样新增了Map这种数据结构。我们今天要实现的Map跟前面所实现的Set是十分相似的。只不过在对应的映射关系时会有些修改。

      那么这篇文章我们快速的完成Map类的相关代码:

      

    function Map () {
        var items = {};
    
        this.has = function (key) {
            return key in items;
        }
    
        this.set = function (key,value) {
            items[key] = value;
        }
    
        this.delete = function (key) {
            if(this.has(key)) {
                delete items[key];
                return true;
            }
    
            return false;
        }
    
        this.get = function (key) {
            return this.has(key) ? items[key] : undefined;
        }
    
        this.values = function () {
            var values = [];
            for(var k in items) {
                if(this.has(k)) {
                    values.push(items[k])
                }
            }
            return values;
        }
    
        this.keys = function () {
            return Object.keys(items);
        }
    
        this.getItems = function () {
            return items;
        }
    
        this.clear = function() {
            items = {};
        }
    
        this.size = function () {
            return Object.keys(items).length;
        }
    }
    
    var map = new Map();
    
    map.set("zak","fat");
    map.set("lily","thin");
    map.set("david","big");
    map.set("jams","small");
    
    console.log(map.has("jams"));//true
    console.log(map.has("zaking"));//false
    
    console.log(map.size());//4
    console.log(map.keys());//["zak", "lily", "david", "jams"]
    console.log(map.values());//["fat", "thin", "big", "small"]
    console.log(map.get("zak"));//fat
    
    map.delete("zak");
    console.log(map.has("zak"));//false
    console.log(map.getItems());//{lily: "thin", david: "big", jams: "small"}

      这样我们就实现了自己的Map类。

      ES6中的Map类,小伙伴们也可以用上面的测试方式来测试ES6原生Map,跟ES6原生的Set堪比兄弟结构。所以这里也不再多说。大家最好自己去敲一遍代码。相信小伙伴们一起学到这里的话,肯定对数据结构不在陌生。其实数据结构的面纱并不神秘。

      这一篇代码着实不多,但是对下面要讲的散列表(hashMap)又十分必要。所以就单独拆出来了一章。独立的简单说明了一番。

      除了后面要讲的散列表外,还剩下两个数据结构要讲讲,那就是树和图, 其中还会加入一些相关算法的介绍和说明。

      然后,hashMap个人觉得十分重要,是一种存储元素及快速查找元素十分便捷一种数据结构。这里不多说。下一篇会详细的讲解hashMap。

      最后,由于本人水平有限,能力与大神仍相差甚远,若有错误或不明之处,还望大家不吝赐教指正。非常感谢!

  • 相关阅读:
    js用button激活 Alert 元素关闭按钮的交互功能
    js中的$符号代表什么
    js中#代表什么
    amazeui学习笔记--js插件(UI增强)--警告框Alert
    amazeui学习笔记--css(常用组件16)--文章页Article
    amazeui学习笔记--css(常用组件15)--CSS动画Animation
    amazeui学习笔记--css(常用组件14)--缩略图Thumbnail
    amazeui学习笔记--css(常用组件13)--进度条Progress
    amazeui学习笔记--css(常用组件12)--面板Panel
    amazeui学习笔记--css(常用组件11)--分页Pagination
  • 原文地址:https://www.cnblogs.com/zaking/p/8909401.html
Copyright © 2011-2022 走看看